第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在最新的Linux上編譯程序以在舊的Linux上運行

如何在最新的Linux上編譯程序以在舊的Linux上運行

阿晨1998 2021-04-01 14:11:27
我將安裝Arch Linux與對決啟動的Linux Mint 18.1結(jié)合使用。在我的大學中,我們安裝了lubuntu 16.04和Ubuntu 14.04。我還啟用了Arch Linux中的測試庫,因此我獲得了更新的軟件包,因此,由于此原因,當我在Arch上編譯任何C ++程序時,由于共享庫的版本與Mint不匹配,它將無法在Linux Mint上運行。像libMango.so.64在拱形中,而libMango.so.60在薄荷上。我該如何克服呢?所以我要問如何用較新的編譯器和共享庫編譯任何C / C ++,以便與舊的共享庫一起正常運行?就像我在帶有-m32標志的64位計算機上編譯32位程序一樣,舊共享庫也有標志嗎?我正在使用gcc 8.1。
查看完整描述

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


查看完整回答
反對 回復 2021-04-16
  • 1 回答
  • 0 關(guān)注
  • 351 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號