如何在linux 32位機器編譯64位程式

2021-09-22 21:50:03 字數 1232 閱讀 7490

編譯64位程式,不一定要編譯機器是64位的,但是32位機器預設安裝的gcc編譯環境還是不能用來編譯64位程式。

編譯64位程式,需要加上-m64編譯器引數,預設安裝的gcc已經支援該引數,但是缺少64位機器指令相關的檔案,所以不能編譯,會出現下面的錯誤

[plain]view plain

copy

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

[plain]view plain

copy

將會安裝下列額外的軟體包:  

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  

下列軟體包將被公升級:  

cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base libgcc1 libgomp1 libstdc++6 libstdc++6-4.4-dev  

如何在64位Linux系統上編譯32位程式

在64位的ubuntu,gcc8.2.0的系統上,如何編譯乙個32的程式?查詢gcc文件可知,編譯64位程式使用 m64選項,例如 gcc m64 o3 index.c o index 該程式只能在64位機器上執行編譯32位程式使用 m32選項,例如 gcc m32 o3 index.c o ind...

Linux32位和64位系統的區別及如何選擇?

32位作業系統表示32位cpu對記憶體定址的能力 64位作業系統表示64 位cpu對記憶體定址能力 32位作業系統只能安裝在32位cpu處理器和64位cpu處理器上 64位作業系統只能安裝在64位cpu處理器上 32位作業系統對記憶體不能超過4gb 64位作業系統對記憶體定址可以超過4gb,企業伺服...

linux 32位向64位的移植常見問題

1.資料截斷 由於long型別變數的運算 賦值 比較 移位等 產生。long定義在x86上為32bits,而在ia64上為64bits.容易在與int型變數運算時出現異常。處理方法 盡量避免不同型別變數間的運算,避免將長度較長的變數賦值到較短的變數中,統一變數長度可以解決這個問題。簡單的對於32位轉...