我在尝试编译在Ubuntu上使用exp函数的程序时遇到了一些麻烦。我从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
在这里,我向您展示了我的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 $<
此外,我已将其包含在我的头文件的顶部,它可以在另一台计算机上运行。
你知道发生了什么吗?
答案 0 :(得分:9)
$(CC) $(LDLAGS) -o $@ $@.o $(OBJ)
应该是
$(CC) -o $@ $@.o $(OBJ) $(LDLAGS)
在目标文件取决于GCC版本之前是否可以给出-l
标志。
答案 1 :(得分:1)
没关系。对于这个问题还有进一步的兴趣还是挣扎也太长了,还行
LDLAGS = -lm
应该写成
LDLIBS = -lm
因为LDLIBS
放在目标文件之后,与LDFLAGS
不同,extract
在默认制作模板中以documentation提示结束。