64位 Linux 編譯32位應用程式

2021-07-12 03:18:32 字數 1378 閱讀 9536

以 scientific linux 6.2 為例:

scientific linux 與 centos 都是 redhat linux 的民間再發行版。因為它們既有redhat的穩定,又可以及時免費更新bugfix,所以比較流行。其中scientific linux由費公尺實驗室維護,公司內的編譯伺服器都安裝此版本。

uname -r 結果是:2.6.32-220.17.1.e16.x86_64, 確認是64位環境。

先檢查編譯環境是否完備。確認下」development tools」, 「compatibility libraries」 這兩個元件有沒有安裝:

$ yum grouplist "development tools"

"compatibility libraries"

沒裝則裝上:

$ yum groupinstall "development tools"

$ yum groupinstall "compatibility libraries"

另外還需要安裝 glibc-devel 的32位版

$ yum install glibc-devel.i686
下面寫段**測試下:

/* test.c */

#include

int main()

64位編譯執行結果:

shell**

$ gcc test.c  

$ file a.out

a.out: elf 64-bit lsb executable ...

$ ./a.out

sizeof long is 8

32位編譯執行結果 (在64位系統編譯32位程式需要給 gcc 加 -m32 引數):

shell**

$ gcc -m32 test.c  

$ file a.out

a.out: elf 32-bit lsb executable ...

$ ./a.out

sizeof long is 4

以 ubuntu 12.04 為例:

uname -p 結果:x86-64, 確認是64位環境。

ubuntu 中需要安裝以下包:

shell**

$ apt-get install build-essential module-assistant  

$ apt-get install gcc-multilib g++-multilib

測試過程同上。

在64位linux下編譯32位程式

一般情況下我們最好是在乙個平台上編譯本平台的二進位制程式,比如在32位平台上編譯32位程式而在64位平台上編譯64位程式。現在64位的系統 這裡主要指x86 64系統,包括amd64和intel的em64t 已經開始廣泛的使用起來了,甚至於你現在要是想買32位的處理器根本就沒有。64位的系統在效能和...

在64位linux下編譯32位程式

留存備份 一般情況下我們最好是在乙個平台上編譯本平台的二進位制程式,比如在32位平台上編譯32位程式而在64位平台上編譯64位程式。現在64位的系統 這裡主要指x86 64系統,包括amd64和intel的em64t 已經開始廣泛的使用起來了,甚至於你現在要是想買32位的處理器根本就沒有。64位的系...

在64位linux下編譯32位程式

一般情況下我們最好是在乙個平台上編譯本平台的二進位制程式,比如在32位平台上編譯32位程式而在64位平台上編譯64位程式。現在64位的系統 這裡主要指x86 64系統,包括amd64和intel的em64t 已經開始廣泛的使用起來了,甚至於你現在要是想買32位的處理器根本就沒有。64位的系統在效能和...