ubuntu64位編譯32位
『壹』 64位UBUNTU 下 如何用GCC 編譯出32位程序 求前輩指點
目測是32位的搜索路徑下沒有sys/cdefs.h
一般64位系統最好不要安裝32位庫的-dev,經常有沖突,強行安裝會破壞64位環境,頭文件並不像共享庫分得那麼完美。
我覺得比較好的做法是,重新把某一個文件夾當成rootfs,在裡面安裝各種32位的庫和庫-dev,然後給gcc傳遞參數"--sysroot=路徑"就可以讓gcc重新選取那個文件夾為rootfs,而不再認為/為rootfs。其實這樣就變成交叉編譯了。也可以在這個rootfs中安裝32位的必要軟體包如bash,gcc,coreutils等等,然後chroot進去就變成host編譯了。其實有個比較簡單的方法,就是虛擬機下安一個32位的ubuntu,然後裝好各種軟體包,然後直接對/打包,再拿出來解壓就是rootfs了,後面最多就是缺啥安啥,工作量比較小。當然如果你不在意編譯速度,直接虛擬機下編最簡單
『貳』 怎樣在64位的Ubuntu中使用32位的系統庫或是
有個已經被淘汰的庫可以使用 ia32-libs,同時我也找到了一個新的庫可在64位上使用lib32z1-dev;你只要在你的系統中安裝上述兩個庫便可以在64位的系統中使用32位的庫
linux13.04的發行版安裝可能有點復雜,但是我相信大多數已經不再使用這個發行版了,很多的人都是14.04或是16.04的版本,所以使用一下命令即可:
sudo apt install lib32z1-dev and sudo apt install ia32-libs
『叄』 linux64位機器編譯32位程序出現錯誤。
32 和 64 是完全兩個不同的系統。Linux 他們的兼容,完全是基於內核的雙模式切換功能,但是因為是基於內核的。所以 32 和 64 的系統函數庫就還是沒關系。
那麼,你編譯和運行 32 位程序,就需要 64 位的函數庫介面支撐。同樣 64 位程序,也需要 64 位的函數庫提供支撐。
你這個問題,教程只讓你裝了最基本的編譯器環境,但是函數支撐環境全都沒有裝,肯定是還會提示找不到需要的函數庫的。
另外,就算你這個命令裝了需要的函數庫,也肯定只是裝了 64 位的函數庫,32 位庫也沒有裝。那麼編譯 32 位程序也會出現找不到 32 位函數庫的問題的。
你這個問題,我建議你學習兩部分:
1、Linux 的依賴關系;
2、Linux 的 mutilib 相關實現。
我建議,編譯 32 的程序請用純 32 位系統。64 位系統只編譯 64 位的程序。64 位系統只可以運行 32 位程序,不要用來編譯。Linux 裡面隨便找個程序,就會依賴很多的函數庫,這對於編譯器調用來說,會很亂的。
如果真的沒有空閑機器去單獨跑 32 位系統了,我建議要麼是 chroot 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。
『肆』 64位linux下面的GCC如何編譯出一個32位可執行程序
編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。
編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤
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
將會安裝下列額外的軟體包:
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
下列軟體包將被升級:
1. 編譯連接成 32 位的 windows xp 32位系統下可運行的程序;
2. 編譯連接成 64 位的 windows vista 64位系統下可運行的程序;
3. 編譯連接成 32 位的 ubuntu 32位系統下可運行的程序;
4. 編譯連接成 64 位的 ubuntu 64位系統下可運行的程序。
老師出的題,不太懂怎麼實現
『伍』 ubuntu64位怎麼編譯32位qt庫
64位可以編32位的程序出來,在各種FLAGS中增加 -m32 編出來的就是32位程序,連接時自然是找32位的共享庫
這個要看發行版對32位支持的實現,比如gentoo下如果開abi支持雙架構那很可能悲劇,因為有些包還沒跟上,如果用binary的32位庫又會因為版本不同出現莫名其妙的問題,比如fontconfig的坑。
我在64位編32位程序都是使用chroot的方法,這樣就可以把32位的頭文件庫什麼的全放在某個地方。我用的是ubuntu,32位庫和64位庫位置不一樣,一般可以直接安裝32位的庫,如果遇到某些比較特殊的庫,一般都可以通過重新編譯增加rpath解決,如果沒源碼也可以用patchelf直接給elf上rpath。
如果您認可我的答案,請採納。
您的採納,是我答題的動力,O(∩_∩)O謝謝!!
『陸』 ubuntu64位能運行32位的軟體么
關於vim之類開源的軟體,不同系統編譯的版本都有,所以這些軟體完全沒有問題。
其實大多數linux軟體都是開源的,即使沒有64位安裝包,你自己也可以用gcc編譯一個。
至於極少數的32位私有軟體,可以安裝32位支持庫,比如ia32-libs-multiarch。
最好搜索一下sudo apt-cache search ia32
---------------------
這些擔心都是沒有必要的,win7 64不是也可以運行32位軟體嗎。
而linux關於64位系統的問題,更早就已經解決了。
『柒』 ubuntu64位怎麼安裝32位qt
如果是64位編譯安裝32位.有點麻煩,
但是可以拿32位機子編譯好的,拿過來,然後在QT CREATE裡面設置一下就可以使用了(記得安裝32位兼容包,可以網路)
『捌』 64位的電腦裝32位的ubuntu,gcc編譯結果和正常32位的電腦會不會不一樣
不會啊,編譯結果是正常32位的
『玖』 64位ubuntu 14.04裝什麼依賴才能運行32位程序
太多人問這個了。
這是從ubuntu中文論壇上粘過來的Poloshiao大神的回復:
自 Ubuntu 13.10 及 以後版本 已經是 multiarch 不需要再安裝 ia32-libs 直接安裝 32 bit 的套件即可
如果安裝過程 還是出現缺少 ia32-libs 的錯誤訊息
需要到 Ubuntu 13.04 套件庫 下載
ia32-libs 及 ia32-libs-multiarch 的 deb 檔案下來安裝
因為 Ubuntu 13.10 及 14.04 套件庫裏 沒有 ia32-libs 及 ia32-libs-multiarch 的套件
『拾』 64位ubuntu可不可以運行32位系統的軟體
默認不行,會提示架構不支持。要使用32位deb包可以先get ia32-libs*,安裝的時候加入 --force-architecture參數。
如果是源代碼編譯不受影響。