1 回答

TA貢獻1784條經(jīng)驗 獲得超8個贊
如何使用較新的編譯器和共享庫編譯任何C / C ++,以便與舊的共享庫一起正常運行?
如果這些庫的API(甚至ABI,包括內(nèi)部結(jié)構(gòu)的大小和對齊方式,字段偏移,vtables組織)發(fā)生了不兼容的更改,則您將無法可靠地執(zhí)行此操作。
通常,最好在另一臺計算機上重新編譯源代碼(如果該源與您的學歷無關(guān),那么您的大學可能會禁止這樣做)。順便說一句,如果您的源代碼位于某個git
存儲庫中(例如github,如果它是開放源代碼),則在多臺計算機上進行傳輸非常容易。
一些極少數(shù)的庫在與二進制格式的其他版本兼容(例如在ABI級別)上做出了真正的(并有文件證明)的努力,但這并不常見。在Unix的和免費軟件的傳統(tǒng)是關(guān)心源碼級兼容。和POSIX標準只關(guān)心源代碼的兼容性。
您可能會考慮使用某些chroot環(huán)境(請參閱chroot(2)和path_resolution(7)&憑據(jù)(7)),以將較早發(fā)行版的基本部分包含在較新發(fā)行版中。詳細信息是特定于發(fā)行版的(在Debian和Ubuntu上,另請參見schroot和debootstrap)。您也可以考慮在某些VM中運行完整發(fā)行版,或者使用Docker等容器。
而且您可能會嘗試靜態(tài)鏈接(本地)可執(zhí)行文件,因此請使用 g++ -static
添加回答
舉報