當前位置:首頁 » 編程軟體 » gcc64位編譯32位

gcc64位編譯32位

發布時間: 2022-06-26 11:45:17

A. 如何在64位linux編譯安裝32位wine

以Ubuntu為例說明
一、安裝安裝lxc
1、安裝lxc
sudo apt-get install lxc lxc-templates
2、現在創建一個32位的容器,並把目錄綁定到容器:
sudo lxc-create -t ubuntu -n my32bitbox -- --bindhome $LOGNAME -a i386
3、然後啟動容器;在控制台輸入用戶名和密碼。
sudo lxc-start -n my32bitbox
4、在/etc/apt/sources.list中添加內容
sudo sh -c "sed s/deb/deb-src/ /etc/apt/sources.list >> /etc/apt/sources.list"
5、安裝先決條件
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get build-dep wine # 如果失敗使用 sh install-wine-deps.sh cd $HOME mkdir wine32 cd wine32 ~/wine-git/configure make -j4
6、關閉容器
sudo shutdown -h now
二、安裝chroot Method
1、安裝
sudo apt-get install schroot debootstrap
2、創建配置文件
sudo editor /etc/schroot/chroot.d/precise_i386.conf
3、添加內容
[precise_i386] description=Ubuntu Precise personality=linux32 directory=/srv/chroot/precise_i386 root-users=your_username type=directory users=your_username
4、創建的Ubuntu的chroot環境
sudo mkdir -p /srv/chroot/precise_i386
sudo debootstrap --variant=buildd --arch=i386 precise /srv/chroot/precise_i386 http://archive.ubuntu.com/ubuntu/
5、使在chroot內apt-get的工作:
sudo cp /etc/apt/sources.list /srv/chroot/precise_i386/etc/apt/
6、進入chroot:
schroot -c precise_i386 -u root
7、得到基礎包
apt-get update apt-get install ubuntu-minimal
sudo apt-get install software-properties-common
8、安裝構建依賴關系:
apt-get build-dep wine
如果報錯:E: You must put some 'source' URIs in your sources.list
則執行
add-apt-repository ppa:ubuntu-wine/ppa apt-get update
9、下載Wine源
apt-get install git git clone git://source.winehq.org/git/wine
10、編譯
cd wine
./configure make
11、運行
export DISPLAY=:0
./wine notepad
12、在chroot外部執行
exit
sudo apt-get install wine
exit
cd wine
./wine notepad
三、手動連接庫的方法
1、執行下面代碼
sudo apt-add-repository ppa:ehoover/compholio
sudo apt-get update
sudo apt-get install ia32-libs-dev
2、或者設置符號連接
cd /usr/lib/i386-linux-gnu
sudo ln -s libfreetype.so.6 libfreetype.so
sudo ln -s libX11.so.6 libX11.so
sudo ln -s libXau.so.6 libXau.so
sudo ln -s libXcursor.so.1 libXcursor.so
sudo ln -s libXi.so.6 libXi.so
sudo ln -s libXext.so.6 libXext.so
sudo ln -s libXxf86vm.so.1 libXxf86vm.so
sudo ln -s libXrandr.so.2 libXrandr.so
sudo ln -s libXrender.so.1 libXrender.so
sudo ln -s libXinerama.so.1 libXinerama.so
sudo ln -s libXcomposite.so.1 libXcomposite.so
sudo ln -s libGLU.so.1 libGLU.so
sudo ln -s libOSMesa.so.6 libOSMesa.so
sudo ln -s libgnutls.so.26 libgnutls.so
sudo ln -s libsane.so.1 libsane.so
sudo ln -s libv4l1.so.0 libv4l1.so
sudo ln -s libv4l2.so.0 libv4l2.so
sudo ln -s liblcms.so.[0-9] liblcms.so
sudo ln -s libcapi20.so.3 libcapi20.so
sudo ln -s libcups.so.2 libcups.so
sudo ln -s libfontconfig.so.1 libfontconfig.so
sudo ln -s libgsm.so.1 libgsm.so
sudo ln -s libtiff.so.[0-9] libtiff.so
sudo ln -s libmpg123.so.0 libmpg123.so
sudo ln -s libodbc.so.1 libodbc.so
sudo ln -s libopenal.so.1 libopenal.so
sudo ln -s libldap-2.4.so.2 libldap.so
sudo ln -s libldap_r-2.4.so.2 libldap_r.so
sudo ln -s liblber-2.4.so.2 liblber.so
sudo ln -s libxml2.so.2 libxml2.so
sudo ln -s libxslt.so.1 libxslt.so
sudo ln -s libssl.so.0.9.8 libssl.so
sudo ln -s libcrypto.so.0.9.8 libcrypto.so
sudo ln -s libjpeg.so.8 libjpeg.so
sudo ln -s mesa/libGL.so libGL.so
cd /usr/lib/i386-linux-gnu/mesa
sudo ln -s libGL.so.1 libGL.so
cd /lib/i386-linux-gnu
sudo ln -s libdbus-1.so.3 libdbus-1.so
sudo ln -s libpng12.so.0 libpng12.so
sudo ln -s libncurses.so.5 libncurses.so
3、可能還需要的32位libraries
sudo apt-get install libosmesa6:i386 libosmesa-dev libjpeg-turbo8-dev:i386

B. CentOS64位環境下使用gcc怎麼設置能編譯輸出32位版本程序

從守護進程的概念可以看出,對於系統所要通過的每一種服務,都必須運行 一個監聽某個埠連接所發生的守護進程,這通常意味著資源浪費。為了解決這個問題,Linux引進了「網路守護進程服務程序」的概念。Redhat Linux 9.0使用的網路守護進程是xinted(eXtended InterNET daemon)。和stand-alone模式相比xinted模式也稱 Internet Super-Server(超級伺服器)。xinetd能夠同時監聽多個指定的埠,在接受用戶請求時,他能夠根據用戶請求的埠不同,啟動不同的網路服 務進程來處理這些用戶請求。可以把xinetd看做一個管理啟動服務的管理伺服器,它決定把一個客戶請求交給那個程序處理,然後啟動相應的守護進程

C. x86-64上怎麼安裝GCC,編譯32位和64位程序,謝謝。

如果大多數類unix系統應當是自帶gcc的 編譯程序時使用不同的參數就可以選擇編譯成64位或者32位. 如果要求性能,推薦使用icc

D. 64位linux下面的GCC如何編譯出一個32位可執行程序

理論上安裝支持環境,之後 64 位的 gcc 編譯成 32 位程序,就加 -m32 參數即可。

當然還一個辦法是裝個 32 位的 gcc 。

另外,交叉編譯也適用於 x86 架構。

不過這么編譯經常會出現各種問題,所以編譯 32 位的程序,最好還是用 32 位系統。

不一定重裝,用 chroot 和 setarch 命令配合即可弄出一個 32 位的子系統。

E. 64位linux下的GCC如何編譯出一個32位可執行程序

理論上安裝支持環境,之後 64 位的 gcc 編譯成 32 位程序,就加 -m32 參數即可。

當然還一個辦法是裝個 32 位的 gcc 。

另外,交叉編譯也適用於 x86 架構。

不過這么編譯經常會出現各種問題,所以編譯 32 位的程序,最好還是用 32 位系統。

不一定重裝,用 chroot 和 setarch 命令配合即可弄出一個 32 位的子系統。

F. 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了,後面最多就是缺啥安啥,工作量比較小。當然如果你不在意編譯速度,直接虛擬機下編最簡單

G. 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 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。

H. 64位的電腦裝32位的ubuntu,gcc編譯結果和正常32位的電腦會不會不一樣

不會啊,編譯結果是正常32位的

I. gcc g++ 使用哪些編譯選項可以讓編譯出來的程序兼容32位和64位

用32位的gcc,編譯出來後,能在32位上運行,也能在64位上兼容。

J. 64位linux編譯32位程序

這個比較麻煩。
首先你要裝好全套的 32 位對應的開發編譯支持環境和對應的運行環境,之後還要設置你這個軟體編譯時用 32 位的參數和 32 位的編譯器。

你這個其實等同於交叉編譯。

熱點內容
酷狗音樂試聽緩存刪了會怎樣 發布:2025-02-13 11:02:12 瀏覽:267
python游戲服務端 發布:2025-02-13 11:00:19 瀏覽:927
雲原生伺服器 發布:2025-02-13 10:55:34 瀏覽:827
linuxip命令查看ip 發布:2025-02-13 10:49:45 瀏覽:421
java基礎應用 發布:2025-02-13 10:44:53 瀏覽:711
linux內核搶占 發布:2025-02-13 10:36:32 瀏覽:890
家裝公司源碼 發布:2025-02-13 10:35:35 瀏覽:49
aspnet更新資料庫 發布:2025-02-13 10:35:34 瀏覽:385
海爾壓縮機不工作 發布:2025-02-13 10:15:32 瀏覽:224
才兒坊編程 發布:2025-02-13 10:09:58 瀏覽:730