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
參考
【1】 講解說明
<a href="http://www.cnblogs.com/steven_oyj/archive/2010/06/24/1764253.html">http://www.cnblogs.com/steven_oyj/archive/2010/06/24/1764253.html</a>