2014-09-22 65 views
4

我想編譯Linux上的動態鏈接的可執行文件,我想針對一個老的glibc ABI,以確保它能夠儘可能運行在儘可能多的Linux計算機。我知道典型的解決方案是使用chroot或虛擬機,安裝舊的工具鏈,讓工具鏈自然地定位到舊的glibc ABI,但我想知道是否有明確告訴編譯器的方法:「嘿,我希望你依賴版本GLIBCXX_3.4.11「。目標特定的glibc ABI

謝謝!

回答

5

嘿,我希望你能依靠的版本GLIBCXX_3.4.11

注意GLIBCXXlibstdc++,並glibc

當您將程序與libstdc++.so關聯並使用該版本中已更改的某個符號時,編譯器(實際上是鏈接器)會記錄所需版本,例如GLIBCXX_3.4.11

就可以避免這種情況的唯一方法是通過安排反對不同版本的libstdc++.so鏈接,並是最容易通過chroot來實現,或者通過不使用相應的符號。所以不,你不能只說「我要GLIBCXX_3.4.11」。

+0

是的,我是混合了C和C++運行時庫。感謝您指出了這一點。我只會鏈接到一個較舊的系統。謝謝! – staticfloat 2014-09-24 19:50:03