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

linux編譯32位程序

發布時間: 2023-02-02 11:52:17

1. 64位linux編譯32位程序

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

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

2. 如何在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

3. 64位linux系統編譯程序時可以鏈接32位的庫嗎

64位可以編32位的程序出來,在各種FLAGS中增加 -m32 編出來的就是32位程序,連接時自然是找32位的共享庫
這個要看發行版對32位支持的實現,比如gentoo下如果開abi支持雙架構那很可能悲劇,因為有些包還沒跟上,如果用binary的32位庫又會因為版本不同出現莫名其妙的問題,比如fontconfig的坑。
我在64位編32位程序都是使用chroot的方法,這樣就可以把32位的頭文件庫什麼的全放在某個地方。我用的是ubuntu,32位庫和64位庫位置不一樣,一般可以直接安裝32位的庫,如果遇到某些比較特殊的庫,一般都可以通過重新編譯增加rpath解決,如果沒源碼也可以用patchelf直接給elf上rpath。

4. 如何在linux系統下編譯x265

Libx265在windows+linux下的編譯
1. Windows編譯
1.1 系統環境
Win7 64位,旗艦版 SP1
1.2 需要工具
(1) cmake-3.5.0-rc1-win32-x86.msi
直接安裝即可。
(2) mercurial-3.7.1-x86.msi
直接安裝即可。
(3) tortoisehg-3.2.4-x64.msi
直接安裝即可。我電腦是64位的,剛開始下載的32位程序,發現用不了。
32位下載 64位下載
(4) vld-2.5-setup.exe
直接安裝即可。
(5) yasm-1.3.0-win32.exe
將名字修改為yasm.exe,然後放到system32中。
1.3 下載代碼
x265-src.tar.gz

1.4 編譯
將上面5個工具安裝完之後,就可以編譯了。編譯很簡單。
進入到代碼的build目錄,找到你使用的visual studio的目錄,進去雙擊執行build-all.bat,然後會彈出CMake的配置對話框。
點擊「Generate」,當看到「Configuring done 、Generating done」時,說明vs的工程文件已經生成好了。
此時,把CMake關閉掉,cmd對話框還會繼續編譯,直到編譯完畢,cmd會自動退出。

5. 如何在Linux下用gcc將c語言文件編譯成32位exe文件,且可以在Windows下運行

有方法的,不過要看你編繹出的程序需要用到多少windows的庫,看看linux下有沒有可以替代的,不過很多時候沒有windows內核還是無法編譯成功的。
方法一:安裝mingw32
方法二:virtualbox安裝xp的虛擬機
方法三:通過wine使用cl命令行編譯
上面幾個方法你可以嘗試一下。
至於編輯嘛,高手一般直接就用vim,如果你覺得難用的話,可以用eclipse或者kdevelop,kdevelop有點像windows下VS,希望對你有所幫助

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

7. qt可編譯運行但不能獨立運行linux

出問題的exe名稱為TestApp.exe,在Visual Studio下編譯運行都正常,但無法直接點擊exe運行。報錯為(應用程序無法正常啟動(0xc000007b)。請單擊「確定」關閉應用程序)
本人環境:基於visual studio IDE下的QT編譯器,共有四種,在 qt-版本號 文件夾下。
我的問題解決步驟如下:
1.看準自己項目的編譯環境
 我電腦雖然是64位的,但是編譯器環境是32位的,故之後所有都需要以32位為標准
由於是Visual Studio ,所以採用下面文件夾中的msvc2017環境進行編譯(沒有標注64位就是32位)
2.添加系統環境變數
打開控制面板搜索環境變數,對系統path進行更改
按照上一步的環境進行配置!!!不要添加冗餘路徑,一項即可!!
 PS:多項也可以,但是要在IDE中選擇正確的default編譯器,不然系統會搞混64和32位的dll
 3.進入qt自帶的命令行中
開始框中搜索 → 選擇合適的環境(比如我是MSVC 2017 32-bit)→ 進入目標exe程序所在文件夾
 輸入命令
windeployqt xxx(目標exe名稱)
復制
PS:該命令(windeployqt)若添加了系統Path後,也可以直接在系統cmd中運行,前提是:環境Path只有適合自己項目的那一項!!(only 32 or 64)  否則系統會弄混。。。然後就又失敗鏈接了qaq
此時,在exe的文件夾下面會多出很多文件夾和dll文件,表明已經link成功
再次強調:不同位數的編譯器鏈接出來的dll不同!一定一定要適合自己的程序

8. 如何用GCC在linux下編譯C語言程序

在Linux下面,如果要編譯一個C語言源程序,我們要使用GNU的gcc編譯器,假設我們有下面一個非常簡單的源程序(hello.c):


int main(int argc,char **argv)


{


printf("Hello Linux ");


}


要編譯這個程序,我們只要在命令行下執行:


gcc -o hello hello.c


gcc 編譯器就會為我們生成一個hello的可執行文件.執行./hello就可以看到程
序的輸出結果了

9. Ubuntu14.04 用arm-linux-gcc 4.4.3 配置交叉編譯環境問題

安裝步驟

1、將壓縮包arm-linux-gcc-4.4.3.tar.gz存放在一個目錄下,這個目錄就是你等會解壓縮的目錄,以後這個目錄就不能隨便刪掉了

熱點內容
safari清除緩存ipad 發布:2024-04-30 00:47:24 瀏覽:523
欄位級數據加密 發布:2024-04-30 00:34:59 瀏覽:73
編譯原理上機實驗構建預測分析器 發布:2024-04-30 00:05:47 瀏覽:571
安卓手機的應用商店是哪個 發布:2024-04-29 23:50:18 瀏覽:411
pythonbinascii 發布:2024-04-29 23:23:00 瀏覽:39
安卓怎麼讓運存變大 發布:2024-04-29 23:21:53 瀏覽:459
springmd5加密 發布:2024-04-29 23:03:50 瀏覽:31
如何選擇伺服器業務量 發布:2024-04-29 22:49:28 瀏覽:446
php怎樣實現頁面跳轉頁面 發布:2024-04-29 22:32:39 瀏覽:696
山東煙台電信dns伺服器ip地址 發布:2024-04-29 21:22:59 瀏覽:137