C 使用自定义目录和库生成文件

C 使用自定义目录和库生成文件,c,linux,gcc,C,Linux,Gcc,我写了一个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-

我写了一个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个元素。

请使用-L选项并指定gmp所在的路径,然后再将-lgmp添加到您的makefile中。

请使用-L选项并指定gmp所在的路径,然后再将-lgmp添加到您的makefile中。

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

e、 g


由于您似乎是在交叉编译,您需要一个gmp的交叉编译版本,该版本在您通过
-L
选项传递的路径中可用。

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

e、 g


由于您似乎是在交叉编译,您需要一个gmp的交叉编译版本,该版本在您通过
-L
选项的路径中可用。

关于make的德语教程:

可以在目标中使用通配符,是的

您可以指定路径以及-l/some/where/libgmp


或者看看gcc中的-L选项,这是一个关于make的德语教程:

可以在目标中使用通配符,是的

您可以指定路径以及-l/some/where/libgmp


或者再次查看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

再次感谢您的回答!它找到了图书馆。。但还有一个问题:

/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

这不是“答案”,而是进一步的问题。你应该问一个新问题,或者(在这种情况下可能更好)更新此问题,因为“答案”无法回答。这不是“答案”,而是进一步的问题。你应该问一个新问题,或者(在这种情况下可能更好)更新这个问题,因为“答案”无法回答。
/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