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