編譯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位轉...