linux鏈結庫問題彙總

2021-08-02 01:45:51 字數 1411 閱讀 8622

linux 動態鏈結庫名稱裡的數字代表什麼?

如libpinyin.so.0

libpinyin.so.1.2.3

linux作業系統也提供了一種更為方便的動態庫呼叫方式,也方便了其它程式呼叫,這種方式與windows系統的隱式鏈結類似。其動態庫命名方式為"lib*.so.*"。在這個命名方式中,第乙個*表示動態鏈結庫的庫名,第二個*通常表示該動態庫的版本號,也可以沒有版本號。在這種呼叫方式中,需要維護動態鏈結庫的配置檔案/etc/ld.so.conf來讓動態鏈結庫為系統所使用,通常將動態鏈結庫所在目錄名。追加到動態鏈結庫配置檔案中。如具有x window視窗系統發行版該檔案中都具有/usr/x11r6/lib,它指向x window視窗系統的動態鏈結庫所在目錄。為了使動態鏈結庫能為系統所共享,還需執行動態鏈結庫的管理命令./sbin/ldconfig。在編譯所引用的動態庫時,可以在gcc採用 ?l或-l選項或直接引用所需的動態鏈結庫方式進行編譯。在linux裡面,可以採用ldd命令來檢查程式依賴共享庫。

基本上如同樓上所言,我再補充一下,通常的當乙個較新版本的庫存在時,有些較老的軟體需要老版本的庫, 

這時候如果新版本自動相容於老版本的話,安裝的時候將自動建立若干個softlink 將老庫名字鏈結到新庫

這樣就出現了。

lib*.so.0和

lib*.so.1.2.3這樣的形勢

linux下的.o,.so,.a,.la檔案的整理?

linux的c、c++庫是不是都不分debug、release?

最近從windows轉到linux上開發,突然發現好像鏈結的時候所有的庫都是不區分debug和release版的。真的是這樣嗎?還是有什麼特殊機制?因為windows上用vc鏈結的時候是必須要選擇用debug還是release得執行庫,對此很疑惑。如果linux上庫真的是不區分的話,是不是意味著自己寫的庫可以debug和release混用?

解答:

-g  -o2 是用來看的?

-g是新增除錯資訊,-o2是優化程度,應該是在編譯階段起作用,但是這兩個選項難道會影響到鏈結的庫的結果嗎?

debug模式下一般新增了-g -ddebug選項,release模式下一般去掉了這些選項,增加了-o2 -o3這樣的優化選項

沒有這種分別,通常你安裝的軟體包都是release版本的,大部分都是經過strip過的,去掉了除錯資訊,

如果需要除錯,需要安裝額外的除錯資訊補充包,當你除錯的時候,通常linux會提示你怎樣去安裝這些除錯資訊。

比如 debuginfo-install命令等。

自己找到了,只要在編譯的時候定義_glibcxx_debug巨集就可以使用除錯版的c++執行庫了。gnu官網說得很清楚。

libstdc++使用了特別的技術使得debug和release版是在同乙個庫里的,而且大部分情況可以混合鏈結,部分特殊情況不可以。具體資訊可以參考gnu官網

Qt呼叫動態鏈結庫問題彙總

步驟 qt 新增 lib庫 qt 呼叫 dll 方法 三種方法 建立與呼叫詳細步驟 建立動態鏈結庫和使用的方法 詳細的 教程以及錯誤的講解 error lnk1112 模組計算機型別 x64 與目標計算機型別 x86 衝突 linux下使用qt編寫和呼叫動態鏈結庫 so檔案 顯式呼叫dll lnk2...

關於linux編譯鏈結庫問題

具體的需求是利用第三方的庫,自己生成乙個自己的庫,在自己的n個產品專案中都可以使用這個庫。也就是 本文是記錄一些實際操作,並不能得出什麼結論,反而會丟擲一些問題 樓樓菜鳥乙個 1.利用第三方庫編譯自己的庫,有兩種情況 a.cmake中 包含所有的與自己庫相關的cpp hpp 檔案時 b.cmake中...

linux動態鏈結庫

在做完mini6410移植全攻略後,打算把自己的linux c筆記,貼出來和大家共享,有不對支援希望大家指出,謝謝!在上篇文章中,是對靜態鏈結庫的介紹,其實有了上面的介紹動態鏈結庫的製作就簡單了,這篇來製作動態鏈結庫 建立動態鏈結庫 cpp view plain copy print?gcc sha...