Неопределенная ссылка на exp в Ubuntu (включая math.h и соединение с -lm) - PullRequest
4 голосов
/ 13 декабря 2011

У меня возникли проблемы при попытке скомпилировать программу, которая использует функцию exp в Ubuntu. Я получаю эту ошибку от gcc:

selied@Apolo:~/Dropbox/practicas UAM/Neuro/practica3$ make
gcc -lm -o retropropagacion retropropagacion.o 
retropropagacion.o: In function `main':
/home/selied/Dropbox/practicas UAM/Neuro/practica3/retropropagacion.c:177: undefined     reference to `exp'
/home/selied/Dropbox/practicas UAM/Neuro/practica3/retropropagacion.c:186: undefined reference to `exp'
/home/selied/Dropbox/practicas UAM/Neuro/practica3/retropropagacion.c:297: undefined reference to `exp'
/home/selied/Dropbox/practicas UAM/Neuro/practica3/retropropagacion.c:306: undefined reference to `exp'
collect2: ld devolvió el estado de salida 1
make: *** [retropropagacion] Error 1

Здесь я покажу вам мой make-файл.

CC      = gcc
LDLAGS  = -lm
CFLAGS  = -Wall -g
EXE     = retropropagacion normalizar
OBJ     = 
INC     = 

compile    : $(EXE)

clean  :
    @echo Borrando archivos temporales...
    rm -f *~ *.o core $(EXE)

help    :
    @echo   

backpropagation : 
    ./retropropagacion entrada.txt 0 0 salida.txt

and : 
    ./retropropagacion and.dat 0 0 salida_and.txt

$(EXE) : % : %.o $(OBJ)
    $(CC) $(LDLAGS) -o $@ $@.o $(OBJ)

%.o : %.c $(INC)
    $(CC) $(CFLAGS) -c $<

Также у меня есть заголовок в верхней части моего файла заголовка, и он работает на другом компьютере.

Знаете ли вы, что происходит?

Ответы [ 2 ]

9 голосов
/ 13 декабря 2011
$(CC) $(LDLAGS) -o $@ $@.o $(OBJ)

должно быть

$(CC) -o $@ $@.o $(OBJ) $(LDLAGS)

Можно ли задать флаги -l до того, как объектные файлы зависят от версии GCC.

1 голос
/ 30 ноября 2015

Неважно.Для дальнейшего интереса к этой проблеме или для борьбы слишком долго, также строка

LDLAGS  = -lm

должна быть записана как

LDLIBS = -lm

, потому что LDLIBS ставится после объектных файлов, в отличие от LDFLAGS, который заканчивается перед ними в шаблоне создания по умолчанию, как документация подсказка.

...