在較舊的 CentOS 機器上部署支援 c++11 的 c++ 程式

在較舊的 CentOS 機器上部署支援 c++11 的 c++ 程式

我的程式依賴 libstdc++.so.6,它依賴 /lib64/libstdc++.so.6.0.19

但我的舊 CentOS 有 libstdc++.so.6 => libstdc++.so.6.0.13

問題

  1. 如果 libstdc++.so.6 的版本低於 0.19,我應該檢查它嗎?
  2. 如何將 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是主編號, 和YZ次編號。當X遞增時,新版本與舊版本不相容。遞增Y意味著對 ABI 進行了相容的更改。更改Z意味著修復了一些錯誤,但介面沒有改變。可執行二進位檔案包含對其使用的共用庫的引用,但這些引用僅包含主編號。實際使用的庫由運行程式的機器上的庫符號連結決定,例如:

/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25

相關內容