
我的程式依賴 libstdc++.so.6,它依賴 /lib64/libstdc++.so.6.0.19
但我的舊 CentOS 有 libstdc++.so.6 => libstdc++.so.6.0.13
問題
- 如果 libstdc++.so.6 的版本低於 0.19,我應該檢查它嗎?
- 如何將 libstdc++ 更新為 libstdc++.so.6.0.19?
答案1
libstc++.so.6.0.13
並且libstdc++.so.0.19
是相容的。請參閱libstdc++ 手冊。在 CentOS 機器上執行程式應該沒有問題。
一般來說,Linux 上的共用函式庫應遵循下列版本控制約定:libfoo.so.X.Y.Z
,其中X
是主編號, 和Y
是Z
次編號。當X
遞增時,新版本與舊版本不相容。遞增Y
意味著對 ABI 進行了相容的更改。更改Z
意味著修復了一些錯誤,但介面沒有改變。可執行二進位檔案包含對其使用的共用庫的引用,但這些引用僅包含主編號。實際使用的庫由運行程式的機器上的庫符號連結決定,例如:
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25