導航:首頁 > 操作系統 > linux64運行32

linux64運行32

發布時間:2023-03-24 12:15:42

『壹』 64位linux下的GCC如何編譯出一個32位可執行程序

理論上安裝支持環境,之後64位的gcc編譯成32位程序,就加-m32參數即可。

當然還一個辦法是裝個32位的gcc。

另外,交叉編迅純譯也適用於x86架構。

不過這么編譯經常會出現各種問題,所以編譯32位的程序,最好還是用32位系統。

不一定重裝,用chroot和setarch命令配合即可弄出一個32位的子系統。

『貳』 linux64位機器編譯32位程序出現錯誤。

32 和 64 是完全兩個不同的系統。Linux 他們的兼容,完全是基於內核的雙模式切換功能,但是因為是基於內核的。所以 32 和 64 的系統函數庫就還是沒關系。
那麼,你編譯和運行 32 位程序,就需要 64 位的函數庫介面支撐。同樣 64 位程序,也需要 64 位的函數庫提供支撐。

你這個問題,教程只讓你裝了最基本的編譯器環境,但是函數支撐環境全都沒有裝,肯定是還會提示找不到需要的函數庫的。
另外,就算你這個命令裝了需要的函數庫,也肯定只是裝了 64 位的函數庫,32 位庫也沒有裝。那麼編譯 32 位程序也會出現找不到 32 位函數庫的問題的。

你這個問題,我建議你學習兩部分:
1、Linux 的依賴關系;
2、Linux 的 mutilib 相關實現。

我建議,編譯 32 的程序請用純 32 位系統。64 位系統只編譯 64 位的程序。64 位系統只可以運行 32 位程序,不要用來編譯。Linux 裡面隨便找個程序,就會依賴很多的函數庫,這對於編譯器調用來說,會很亂的。
如果真的沒有空閑機器去單獨跑 32 位系統了,我建議要麼是 chroot 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。

『叄』 64位linux編譯32位程序

在64位的Linux下,gcc 編譯 32 位程序需要添加參數 -m32 ,ld需要添加參數是 -m elf_i386。
1、Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32bit libraries if you have both the 32bit and 64bit libraries.
2、 ld命令 ld命令是GNU的連接器,將目標文件連接為可執行程序。
3、舉例:

gcc -m32 -o hello hello.c

gcc -m32 -c hello.o hello.c
ld -m elf_i386 -o kernel main.o hello.o

『肆』 如何在64位的linux中運行32位的應用程序

大部分Linux發行套件都有針對x86_64處理器的版本。比較典型的x86_64的處理器有ADM Athlon II和英特爾Xeon。因為這些Linux發行套件都有自己專用的軟體源,這些軟體源會為提供所有它所支持的應用軟體的二進制包。如果你滿足於Linux的安裝方式,你可能不會需要運行32位的程序。
一些Linux商業軟體,尤其是游戲,只提供32的版本。因為某些特殊的理由,你可能需要配置你的電腦來運行32位的軟體。
安裝32位的支持庫
因為x86_64處理器是為x86技術涉及,所以它也是支持32位程序的。在Linux里,你所需要做的就是為這些軟體安裝必要的軟體庫。幸運的是,大部分Linux發行版本已經將這些打包好了。比方在Ubuntu里,這個包就叫做ia32-libs。為了安裝它,你可以打開一個終端,然後輸入下面的內容:
sudo apt-get install ia32-libs
在Kubuntu中,你也可以通過Synaptic和Kpackagekit在圖形界面下安裝。一旦安裝了之後,像游戲之類的軟體就不再需要更多的配置。
圖形問題
當你在一個64位的環境中運行32位的軟體時,Ubuntu仍然會去尋找默認的GTK引擎。這樣導致一個wrong ELF class的報錯。這種情況在你運行某些特定的軟體的時候特別惱人,比方說Chrome,一款新的谷歌瀏覽器開源版本。Ubuntu確實已經將32位版本的GTK引擎安裝在了 /usr/lib32/gtk-2.0,但是我所使用的GTK項目並沒有在這個位置找到。快速的解決方法如下:
1、為你現在用的主題找到32位包。比方說我,我查找了ubuntu packages
2、下載包,然後將包解壓縮
3、為主題找到庫文件
4、將庫拷貝到lib32路徑:
sudo cp ~/download-directory/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so /usr/lib32/gtk-2.0/2.10.0/engines/
比方說Chrome,它的需要可以設置在啟動腳本里: /user/lib32/gtk-2.0如果程序的啟動腳本在你運行的時候沒有去看,而是去尋找 /user.lib/gtk-2.0,你可能需要修改啟動腳本或者在終端里輸出並設置一個環境變數:
export GTK_PATH=/usr/lib32/gtk-2.0 command-to-start-app
如果一個程序沒有啟動腳本,你可以像上面那樣設置下環境變數。

『伍』 如何在64位的linux中運行32位的應用程序

常規做法凳豎,先添加祥咐32bit架構:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

然後,你再安裝或者直接運行棗宴大你的32位程序。

閱讀全文

與linux64運行32相關的資料

熱點內容
伺服器怎麼找到列印機 瀏覽:803
單片機的浮點運算 瀏覽:380
phpsmarty是干什麼 瀏覽:332
智能控制模糊控制及演算法的論文 瀏覽:611
畫單片機最小系統 瀏覽:830
外包程序員35歲以後干什麼 瀏覽:107
java怎麼重新編譯class文件 瀏覽:571
pythonweb開發與介面測試用例 瀏覽:396
python必背筆記 瀏覽:319
陳鋒羽婷的小說 瀏覽:464
安卓怎麼下載正版刺激戰場 瀏覽:235
xrv本田壓縮比 瀏覽:63
空調耗電量手機app怎麼看 瀏覽:723
伺服器怎麼登錄u8 瀏覽:909
明星pdf 瀏覽:270
判斷手機訪問php 瀏覽:119
appstory怎麼設密碼 瀏覽:798
程序員月薪3萬 瀏覽:261
flash反編譯覆蓋碼怎麼找 瀏覽:196
女大男小忘年戀題材電影 瀏覽:83