2010-03-10 75 views
0

我写了一个makefile: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个元素放在目标中。

感谢名单了很多

回答

4

您可能需要为编译器提供-L选项,以将包含gmp库的目录添加到搜索的目录列表中。

例如

-L/usr/local/lib 

-L/usr/local/arm-2009q1/lib 

正如你似乎是交叉编译,你需要在你传递一个-L选择的路径提供了GMP的交叉编译版本。

2

请使用-L选项,并指定GMP是在你的makefile加入-lgmp之前存在的路径。

0

再次感谢名单在GCC看看-L选项上面的答案!它发现图书馆..但来了另一个问题:

/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 
+3

这不是一个'答案'这是一个进一步的问题。你应该问一个新问题或者(在这种情况下可能更好)更新这个问题,因为'答案'不能被回答。 – 2010-03-10 16:47:26