Я пытаюсь использовать переменную 'environ', но она продолжает давать мне ошибку. Кажется, это ошибка makefile/build, и я не могу ее исправить. Я искал ответы, но все же я потерян.Неопределенная ссылка на 'environ'?
Вот мой с файла:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include "cmd.h"
int cmdExec() {
...
extern char **environ;
...
printf("Enter a command\n");
//gets (input);
scanf("%s%*[^\n]", input);
if (...) {
...
}
else if (strcmp(input, "environ") == 0) {
int i;
for (i = 0; environ[i] != NULL; i++) {
printf("%s\n", environ[i]);
}
exit(0);
else
...
return 0;
}
и вот Makefile:
CC = gcc
CFLAGS = -c
CFLAGS-y = -std=c99
all: cmd
cmd.o: cmd.c cmd.h
$(CC) $(CFLAGS) $(CFLAGS-y) cmd.c
cmd.exe: cmd.o
$(CC) -o cmd.exe cmd.o
clean:
rm -rf *.o cmd.exe a.out
Это выход:
make all
gcc -c -std=c99 cmd.c
gcc cmd.o -o cmd
cmd.o:cmd.c:(.text+0x105): undefined reference to `environ'
cmd.o:cmd.c:(.text+0x127): undefined reference to `environ'
collect2: ld returned 1 exit status
make: *** [cmd] Error 1
Из того, что я искал это дело с связыванием библиотек, но я не знаю, как применить это к моей конкретной ситуации. Если бы кто-то дал мне руку, я был бы признателен.
В какой системе вы используете? Скомпилирована ли простая программа «привет, мир», ссылка и выполнение? –
Я нахожусь в Windows 7, и все работает нормально, пока я не попытался использовать «environment». – blutuu
Какой gcc вы используете? Cygwin? MinGW? Что-то другое? –