以 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位的系統在效能和...