64位Ubuntu上編譯32位程式

2021-09-12 14:41:26 字數 1635 閱讀 7247

1.確認主機為64位架構的核心,應該輸出為adm64,執行:

$

dpkg--

print

-architecture

2.確認開啟了多支架功能,應該輸出為i386,執行:

$ dpkg --print-foreign

-architectures

如果沒有,則需要手動開啟,依次執行:

$ sudo dpkg --add-architecture i386  

$ sudo apt-get update

$ sudo apt-get dist-upgrade

3.安裝 gcc multilab, 執行:

sudo apt-get install gcc-multilib g++-multilib
4.注意:用gcc編譯時需要加上 -m32,選項

因為一般情況下在乙個平台上編譯本平台的二進位制程式,比如在32位平台上編譯32位程式而在64位平台上編譯64位程式。

現在我們來測試一下:

/*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

***> file name: hello.c

> author:

> mail:

> created time: 2023年12月01日 星期四 13:06:20

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*******/

#include

int main()

我們編譯一下,首先編譯成正常的64位的系統:

gcc -g hello.c -o hello
把某個程式編譯成32位的系統:

gcc -m32 hello.c
因為沒有指定特定的可執行檔案的名字,所以生成的檔名叫做a.out

我們來看看我們編譯之後的結果:

我們可以發現a.out檔案已經成為了32位的可執行檔案,hello被編譯成為了64位檔案。

reference:

[1][2]

[3]1.確認主機為64位架構的核心,應該輸出為adm64,執行:

Ubuntu 64位編譯32位程式

title ubuntu 64位編譯32位程式 一般情況下,乙個平台上只能編譯當前平台對應的應用程式,比如,64位平台編譯64位應用程式,但是隨著64位平台的普及,多數採用了64位作業系統,而有時又基於某些原因需要編譯出32位的應用程式.本文旨在說明如何在64位作業系統上編譯出32位應用程式.dpk...

64位ubuntu 相容32位

首先要開啟64位系統對32位的支援 第一步 確認64為架構的核心 dpkg print architecture 輸出 adm64 說明已擁有64位架構核心。第二步 確認開啟了多架構支援功能 dpkg print foreign architectures 輸出 i386 說明已開啟,如果沒有需要手...

64位Centos6 0上編譯32位程式

1.檢視當前系統的版本,確定當前系統是64系統 root zjh uname r 2.6.32 5 amd64 2.查詢編譯環境是否完備 確認下 development tools compatibility libraries 這兩個元件有沒有安裝 root zjh yum grouplist d...