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命令可以查看程序的庫依賴