如何在linux下使用gcc的静态库

时间:2016-03-10 21:16:14

标签: linux gcc static-libraries static-linking

我正在尝试使用'ar'创建的静态库'mylib.a'。我见过的例子使用-L和-l来命名库。我尝试使用这些失败了。但是,如果我只是将库文件名放在链接器命令上就可以了。 (我忽略了一些明显的东西?)使用gcc 4.8.4 Ubuntu 14.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

###

1 个答案:

答案 0 :(得分:0)

comment中所述......

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

您可以将您的资源库重命名为libmine.a,然后-L. -lmine可以使用,或者将其重命名为libmylib.a然后-lmylib将有效(但重复lib看起来有点笨拙,或者说是新手。)