我写了一个makefile:
all: server client
server: server.o des.o sha1.o
/usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -o server server.o des.o sha1.o -I /usr/local/include/ -lgmp
client: client.o des.o sha1.o
/usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -o -lgmp client client.o des.o sha1.o -I /usr/local/include/
server.o: server.c
/usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -c -lgmp server.c -I /usr/local/include/
client.o: client.c
/usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -c -lgmp client.c -I /usr/local/include/
des.o: des.c des.h
/usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -c -lgmp des.c -I /usr/local/include/
sha1.o: sha1.c sha1.h /usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -c -lgmp sha1.c -I /usr/local/include/
clean: -rm *.o server client
然后gcc告诉我找不到-lgmp。我试图把它放在其他地方,还有其他不同的错误......
另外,我想知道是否可以在目标中放置2个元素。
Thanx很多
答案 0 :(得分:4)
您可能需要为编译器提供-L
选项,以将包含gmp
库的目录添加到搜索目录列表中。
e.g。
-L/usr/local/lib
或
-L/usr/local/arm-2009q1/lib
当您似乎在进行交叉编译时,您需要在使用-L
选项传递的路径中提供gmp的交叉编译版本。
答案 1 :(得分:2)
请在makefile中添加-lgmp之前使用-L选项并指定gmp所在的路径。
答案 2 :(得分:0)
关于make的德语教程:http://www.ijon.de/comp/tutorials/makefile.html
可以在目标中使用通配符,是的。
您可以指定路径以及-l / some / where / libgmp.so例如。
或者看一下gcc中的-L选项
答案 3 :(得分:0)
Thanx再次获得上述答案!它找到了库..但另一个问题是:
/usr/local/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/local/lib" is unsafe for cross-compilation
/usr/local/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/local/lib/libgmp.so when searching for -lgmp
/usr/local/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/local/lib/libgmp.a when searching for -lgmp
/usr/local/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lgmp
collect2: ld returned 1 exit status
make: *** [server] Error 1