Первое раскрытие: я не большой программист на Си.Я пытаюсь скомпилировать набор кодов C и Fortran с большой родословной, используя Makefile для генерации исполняемого файла для инженерных вычислений.Я использую gcc 4.7.1 на sgi Irix (6.5.30).Во время компиляции основной программы сначала я получаю предупреждение о 'неявном объявлении функции' setenv '.Впоследствии, после генерации всех целевых файлов 'o', компиляция заканчивается с ошибкой:
ld32: Ошибка 33: Неразрешенный символ данных "setenv"
Закомментированиеединственная строка, в которой определен setenv, позволяет выполнить компиляцию и создать исполняемый файл.Однако строка с setenv имеет решающее значение для программы.
Это заставило меня написать тестовый код и подтвердить ту же проблему:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
int main()
{
setenv("FILE","/usr/bin/example.c",50);
printf("File = %s\n", getenv("FILE"));
return 0;
}
Основываясь на всех предложениях, которые я нашел во время поиска в Googleздесь, на стековом обмене и других сайтах, я пытался включить различные заголовки, такие как
#define _POSIX_C_SOURCE
и
#define _GNU_SOURCE
перед любыми утверждениями #define.Я также попытался скомпилировать с -std=c99
, а также -D_XOPEN_SOURCE
и -D_GNU_SOURCE
, но безуспешно.
Я также попытался скомпилировать тестовую программу с собственным компилятором Irix C (cc и c99), и я получаюта же ошибка:
Неразрешенный текстовый символ 'setenv'
Может кто-нибудь, пожалуйста, подать руку помощи на то, что еще я должен искать в моей системе и / или переменные среды вЧтобы устранить эту ошибку?