Undefined reference to exp on Ubuntu (including math.h and linking with -lm)

↘锁芯ラ 提交于 2019-12-10 16:27:09

问题


I'm having some trouble trying to compile a program that uses exp function on Ubuntu. I get this error from 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

Here I show you my makefile.

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 $<

Also I have include at the top of my header file and it works on another computer.

Do you know what's happening?


回答1:


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

should be

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

Whether -l flags can be given before object files depends on the GCC version.




回答2:


Never mind. For further interested about this issue or struggling also too long, also line

LDLAGS  = -lm

should be written as

LDLIBS = -lm

because LDLIBS are put after the object files, unlike the LDFLAGS, which ends in front of them in default make template, as documentation hints.



来源:https://stackoverflow.com/questions/8492064/undefined-reference-to-exp-on-ubuntu-including-math-h-and-linking-with-lm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!