2010-03-10 20 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