gcc/g++ 鏈接庫的編譯與鏈接


https://blog.csdn.net/surgewong/article/details/39236707

看這一篇博文足夠了!!!

 

注意:

1、鏈接過程中可能出現多種鏈接方式,需要使用一些參數來指定(參數都是-XXX形式的);

2、鏈接過程中同一個庫(名稱相同)的靜態和動態兩種鏈接庫,在鏈接過程中,系統優先選擇動態鏈接庫;

3、動態鏈接庫路徑,系統默認在/usr/lib和/usr/local/lib兩個庫目錄搜索,自己定義的庫需要格外指定路徑(設定變量LD_LIBRARY_PATH)或者將其拷貝到這兩個目錄下。當然可以將當前路徑添加到/etc/ld.so.conf文件中或者/etc/ld/so.conf.d目錄下的一個文件中。

4、查看動態鏈接庫。有時候可能需要查看一個庫中到底有哪些函數,nm命令可以打印出庫中的涉及到的所有符號。庫既可以是靜態的也可以是動態的。nm列出的符號有很多,常見的有三種:

  一種是在庫中被調用,但並沒有在庫中定義(表明需要其他庫支持),用U表示;

  一種在庫中定義的函數,用T表示,這是最常見的;

  另一種所謂的“弱態”符號,它們雖然在庫中定義,但可能被其他庫中的同名符號覆蓋,用W表示。

5、使用ldd命令可以查看程序的庫依賴

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM