1、notes

在编译中,和往常一下,在静态库前面加上-l,可是死活编译不通过,提示找不到该文件;后来,经高人指点,指导-l去掉后,编译通过。

我已把相关路径加入到ld.so.conf文件中,并执行了ldconfig。

以下内容摘自[1]

2、静态库引用

-L选项告诉编译器去哪里找需要的库文件,-L.表示在当前目录找。-lstack告诉编译器要链接libstack库,-I选项告诉编译器去哪里找头文件。注意,即使库文件就在当前目录,编译器默认也不会去找的,所以-L.选项不能少。编译器默认会找的目录可以用-print-search-dirs选项查看。

3、$ ar rs libstack.a stack.o push.o pop.o is_empty.o

ar: creating libstack.a

    库文件名都是以lib开头的,静态库以.a作为后缀,表示Archive。ar命令类似于tar命令,起一个打包的作用,但是把目标文件打包成静态库只能用ar命令而不能用tar命令。选项r表示将后面的文件列表添加到文件包,如果文件包不存在就创建它,如果文件包中已有同名文件就替换成新的。s是专用于生成静态库的,表示为静态库创建索引,这个索引被链接器使用。ranlib命令也可以为静态库创建索引,以上命令等价于:

$ ar r libstack.a stack.o push.o pop.o is_empty.o

$ ranlib libstack.a