4
我想編譯Linux上的動態鏈接的可執行文件,我想針對一個老的glibc ABI,以確保它能夠儘可能運行在儘可能多的Linux計算機。我知道典型的解決方案是使用chroot或虛擬機,安裝舊的工具鏈,讓工具鏈自然地定位到舊的glibc ABI,但我想知道是否有明確告訴編譯器的方法:「嘿,我希望你依賴版本GLIBCXX_3.4.11「。目標特定的glibc ABI
謝謝!
我想編譯Linux上的動態鏈接的可執行文件,我想針對一個老的glibc ABI,以確保它能夠儘可能運行在儘可能多的Linux計算機。我知道典型的解決方案是使用chroot或虛擬機,安裝舊的工具鏈,讓工具鏈自然地定位到舊的glibc ABI,但我想知道是否有明確告訴編譯器的方法:「嘿,我希望你依賴版本GLIBCXX_3.4.11「。目標特定的glibc ABI
謝謝!
嘿,我希望你能依靠的版本GLIBCXX_3.4.11
注意GLIBCXX
約libstdc++
,並不約glibc
。
當您將程序與libstdc++.so
關聯並使用該版本中已更改的某個符號時,編譯器(實際上是鏈接器)會記錄所需版本,例如GLIBCXX_3.4.11
。
就可以避免這種情況的唯一方法是通過安排反對不同版本的libstdc++.so
鏈接,並那是最容易通過chroot
來實現,或者通過不使用相應的符號。所以不,你不能只說「我要GLIBCXX_3.4.11」。
是的,我是混合了C和C++運行時庫。感謝您指出了這一點。我只會鏈接到一個較舊的系統。謝謝! – staticfloat 2014-09-24 19:50:03