如何在linux下使用gcc静态库

如何在linux下使用gcc静态库,linux,gcc,static-libraries,static-linking,Linux,Gcc,Static Libraries,Static Linking,我正在尝试使用一个用“ar”创建的静态库“mylib.a”。我看到的示例使用-L和-L来命名库。我尝试使用这些方法失败了。但是,如果我只是将库文件名放在linker命令上,它就可以工作了。(我忽略了一些显而易见的东西?)使用GCC4.8.4Ubuntu14.04(参见代码中的注释)。f?.c和mymain.c非常简单。谢谢 #!/bin/bash # cc -v shows... # gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)

我正在尝试使用一个用“ar”创建的静态库“mylib.a”。我看到的示例使用-L和-L来命名库。我尝试使用这些方法失败了。但是,如果我只是将库文件名放在linker命令上,它就可以工作了。(我忽略了一些显而易见的东西?)使用GCC4.8.4Ubuntu14.04(参见代码中的注释)。f?.c和mymain.c非常简单。谢谢

#!/bin/bash

# cc -v    shows...
#  gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) 

cc -c -Wall -Wstrict-prototypes -o fa.o fa.c
cc -c -Wall -Wstrict-prototypes -o fb.o fb.c
cc -c -Wall -Wstrict-prototypes -o fc.o fc.c
cc -c -Wall -Wstrict-prototypes -o mymain.o mymain.c

ar -rcs mylib.a  fa.o fb.o fc.o

# THIS WORKS
#cc -o mypgm mymain.o mylib.a

# THESE FAIL WITH ERROR '/usr/bin/ld: cannot find -lmylib'
cc -o mypgm mymain.o -L. -lmylib
# OR 
cc -o mypgm mymain.o -static -L. -lmylib

###
正如在一份报告中所指出的


当您使用
-lname
时,链接器会在其中一个(已)被告知要搜索库的目录中查找
libname.a
libname.so


您可以将您的库重命名为
libmine.a
,然后
-L.-lmine
将工作,或者将其重命名为
libmylib.a
,然后
-lmylib
将工作(但重复的
lib
看起来有点笨拙,或新潮)。

使用
-lname
,链接器查找
libname.a
libname.so
。将您的库重命名为
libmine.a
,然后
-L.-lmine
将起作用。(或者将其重命名为
libmylib.a
,然后
-lmylib
将起作用。)正如我所说,一些显而易见的事情。谢谢