當前位置:首頁 » 編程軟體 » linux64位編譯32位

linux64位編譯32位

發布時間: 2023-02-02 17:02:08

1. 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 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。

2. 64位linux編譯32位程序

這個比較麻煩。
首先你要裝好全套的 32 位對應的開發編譯支持環境和對應的運行環境,之後還要設置你這個軟體編譯時用 32 位的參數和 32 位的編譯器。

你這個其實等同於交叉編譯。

3. 怎麼在64位linux機器上編譯32位的openssl庫

使用下面兩條命令編譯 setarch i386 ./Configure --prefix=/usr linux-generic32 -m32 shared make 在編譯過程中可能會碰到錯誤輸出,可能是有些依賴庫找不到 需要把輸出粘出來看看。 另外,提問最好說明你的Linux是什麼發布版

4. 怎麼在64位linux機器上編譯32位的openssl庫

使用下面兩條命令編譯
setarch i386 ./Configure --prefix=/usr linux-generic32 -m32 shared
make

在編譯過程中可能會碰到錯誤輸出,可能是有些依賴庫找不到
需要把輸出粘出來看看。

另外,提問最好說明你的Linux是什麼發布版,這樣其它人好提供更准確的命令。

5. 如何在64位Linux上編譯安裝32位wine

以Ubuntu為例說明
一、安裝安裝lxc
1、安裝lxc
sudo apt-get install lxc lxc-templates
2、現在創建一個32位的容器,並把目錄綁定到容器:
sudo lxc-create -t ubuntu -n my32bitbox -- --bindhome $LOGNAME -a i386
3、然後啟動容器;在控制台輸入用戶名和密碼。
sudo lxc-start -n my32bitbox
4、在/etc/apt/sources.list中添加內容
sudo sh -c "sed s/deb/deb-src/ /etc/apt/sources.list >> /etc/apt/sources.list"
5、安裝先決條件
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get build-dep wine # 如果失敗使用 sh install-wine-deps.sh cd $HOME mkdir wine32 cd wine32 ~/wine-git/configure make -j4
6、關閉容器
sudo shutdown -h now

6. 64位linux下的GCC如何編譯出一個32位可執行程序

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

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

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

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

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

7. 64位linux系統編譯程序時可以鏈接32位的庫嗎

64位可以編32位的程序出來,在各種FLAGS中增加 -m32 編出來的就是32位程序,連接時自然是找32位的共享庫
這個要看發行版對32位支持的實現,比如gentoo下如果開abi支持雙架構那很可能悲劇,因為有些包還沒跟上,如果用binary的32位庫又會因為版本不同出現莫名其妙的問題,比如fontconfig的坑。
我在64位編32位程序都是使用chroot的方法,這樣就可以把32位的頭文件庫什麼的全放在某個地方。我用的是ubuntu,32位庫和64位庫位置不一樣,一般可以直接安裝32位的庫,如果遇到某些比較特殊的庫,一般都可以通過重新編譯增加rpath解決,如果沒源碼也可以用patchelf直接給elf上rpath。

8. 64位linux下面的GCC如何編譯出一個32位可執行程序

編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。
編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤
In file included from /usr/include/features.h:378,
from /usr/include/assert.h:37,
from ../../../include/tinyxml/tinystr.h:42,
from ../../../src/tinyxml/tinystr.cpp:32:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 沒有那個文件或目錄
這時候需要安裝 gcc所有支持文件 sudo apt-get install gcc-multilib
將會安裝下列額外的軟體包:
cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1
libstdc++6 libstdc++6-4.4-dev
建議安裝的軟體包:
gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg
libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc
下列【新】軟體包將被安裝:
gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64
下列軟體包將被升級:
1. 編譯連接成 32 位的 windows xp 32位系統下可運行的程序;
2. 編譯連接成 64 位的 windows vista 64位系統下可運行的程序;
3. 編譯連接成 32 位的 ubuntu 32位系統下可運行的程序;
4. 編譯連接成 64 位的 ubuntu 64位系統下可運行的程序。
老師出的題,不太懂怎麼實現

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:750
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1012
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:719
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:879
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:774
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1127
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:351
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:229
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:912
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:876