⑴ 如何在64位的linux中運行32位的應用程序
大部分Linux發行套件都有針對x86_64處理器的版本。比較典型的x86_64的處理器有ADM Athlon II和英特爾Xeon。因為這些Linux發行套件都有自己專用的軟體源,這些軟體源會為提供所有它所支持的應用軟體的二進制包。如果你滿足於Linux的安裝方式,你可能不會需要運行32位的程序。
一些Linux商業軟體,尤其是游戲,只提供32的版本。因為某些特殊的理由,你可能需要配置你的電腦來運行32位的軟體。
安裝32位的支持庫
因為x86_64處理器是為x86技術涉及,所以它也是支持32位程序的。在Linux里,你所需要做的就是為這些軟體安裝必要的軟體庫。幸運的是,大部分Linux發行版本已經將這些打包好了。比方在Ubuntu里,這個包就叫做ia32-libs。為了安裝它,你可以打開一個終端,然後輸入下面的內容:
sudo apt-get install ia32-libs
在Kubuntu中,你也可以通過Synaptic和Kpackagekit在圖形界面下安裝。一旦安裝了之後,像游戲之類的軟體就不再需要更多的配置。
圖形問題
當你在一個64位的環境中運行32位的軟體時,Ubuntu仍然會去尋找默認的GTK引擎。這樣導致一個wrong ELF class的報錯。這種情況在你運行某些特定的軟體的時候特別惱人,比方說Chrome,一款新的谷歌瀏覽器開源版本。Ubuntu確實已經將32位版本的GTK引擎安裝在了 /usr/lib32/gtk-2.0,但是我所使用的GTK項目並沒有在這個位置找到。快速的解決方法如下:
1、為你現在用的主題找到32位包。比方說我,我查找了ubuntu packages
2、下載包,然後將包解壓縮
3、為主題找到庫文件
4、將庫拷貝到lib32路徑:
sudo cp ~/download-directory/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so /usr/lib32/gtk-2.0/2.10.0/engines/
比方說Chrome,它的需要可以設置在啟動腳本里: /user/lib32/gtk-2.0如果程序的啟動腳本在你運行的時候沒有去看,而是去尋找 /user.lib/gtk-2.0,你可能需要修改啟動腳本或者在終端里輸出並設置一個環境變數:
export GTK_PATH=/usr/lib32/gtk-2.0 command-to-start-app
如果一個程序沒有啟動腳本,你可以像上面那樣設置下環境變數。
⑵ labview32位在64位系統報錯
labview32位在64位系統報錯
在Windows環境中,32位可執行文件可以在64位PC上運行。因此LabVIEW 32位開發系統、運行引擎和可執行文件可以在Windows 64位計算機上運行。運行64位內核的Mac OS X計算機無法運行32位應用程序;如需運行32位應用程序,需要切換到32位內核,內核能否進行切換取決於Mac OS X版本。Linux 64位需要安裝32位庫方可運行32位應用程序;但是,安裝這些庫無法保證所有32位應用程序都能在64位Linux計算機上運行。
能否使用LabVIEW 64位應用中拆程序生成器構建32位版本的可執行文件?
不能,目前不能使用LabVIEW 64位應用程序生成器構建32位版本的可執行文件。
LabVIEW可以訪問多少內存?
應用程序可以請求內存,但是操作系統可以根據可用大小(物理或虛擬)接受或拒絕請求。默認情況下,32位Windows XP上的LabVIEW 32位只能使用最多2 GB的地址空間。有一個3 GB的磨戚啟動選項,可以允許32位Windows XP的應用程序使用最多3 GB的地址空間。64位Windows Vista、64位Windows 7上運行的LabVIEW 32位最多可用4 GB的地址空間瞎培陵。在上述任何配置中,如無足夠的可用連續內存,仍然可能發生大緩沖區無法分配的情況。64位操作系統上的LabVIEW 64位支持的RAM與操作系統支持的RAM相同(理論上為16 EB)。目前,64位Windows的上限為16 TB。
⑶ 64位linux編譯32位程序
在64位的Linux下,gcc 編譯 32 位程序需要添加參數 -m32 ,ld需要添加參數是 -m elf_i386。
1、Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32bit libraries if you have both the 32bit and 64bit libraries.
2、 ld命令 ld命令是GNU的連接器,將目標文件連接為可執行程序。
3、舉例:
gcc -m32 -o hello hello.c
gcc -m32 -c hello.o hello.c
ld -m elf_i386 -o kernel main.o hello.o
⑷ 弱弱的問一句,LINUX 64位系統,能用32位的linux軟體嗎
1、可以的
2、linux64位系統一般會兼容32位軟體嫌數,此余可以安裝32位或64位兩份軟體
比如:libgcc
libgcc.i386 : GCC version 4.1 shared support library
libgcc.x86_64 : GCC version 4.1 shared support library
3、還有純64位linux系森者滾統只能安裝64位軟體。
⑸ 64位linux下的GCC如何編譯出一個32位可執行程序
理論上安裝支持環境,之後64位的gcc編譯成32位程序,就加-m32參數即可。
當然還一個辦法是裝個32位的gcc。
另外,交叉編迅純譯也適用於x86架構。
不過這么編譯經常會出現各種問題,所以編譯32位的程序,最好還是用32位系統。
不一定重裝,用chroot和setarch命令配合即可弄出一個32位的子系統。
⑹ 64位linux下,32位程序能不能調用64位庫文件為什麼
不能,要安裝32位庫才可以,在64位系統當中要運行32位軟體目前比較好的是12.2,但是在裝的時局手候如臘做要自定義安裝32位庫,渣衡運行相當完美,ubuntu當中運行有點兒問題。
⑺ 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 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。