ubuntu編譯32位程序
Ⅰ ubuntu32編譯完之後怎麼返回中端頁面
1.以vi 或者是vim開頭編輯文件,如下圖,輸入命令之後,進入到編輯狀態了。
2.要退出,但是不保存,按esc先,然後輸入【:q】,回車鍵即可退出,無法退出,則在【:q】加入一個嘆號回車鍵就行了。
3.要退出保存的,則輸入【:wq】,強制保存退出,則輸入【:wq】。
4.看到此時已經退出, 在等待命令狀態。
5.以nano開頭編輯文件的,則要退出,按【Ctrl+x】,回車鍵。如要保存的,則先按【Ctrl+o】,再按【x】退出。
6.那麼此時即可退出到終端了。
Ⅱ 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謝謝!!
Ⅲ 如何用ubuntu 12.04 32bit 編譯android 4.4.4
系統環境
系統:Ubuntu12.04 64位系統。
源碼:Android4.4源碼。
選擇Ubuntu12.04,是因為在14.04上沒能折騰成功,在上面兼容32位程序的配置有點煩。12.04必須要用64位的,編譯Android4.4時需要64位環境,同時要兼容32位程序,折騰。
步驟
配置jdk6
Android官方給的步驟是用OpenJdk,實測是不行的。網上找到https://jdk6.java.net/download.html
這個網址有需要的jdk,下載自解壓安裝包。自解壓後在當前目錄下生成一個jdk的目錄,打開/etc/environment,增加自己的jdk
bin目錄到PATH裡面。同時新增如下環境變數:
CLASSPATH=/path/to/your/local/jdk/dir/lib
JAVA_HOME=/path/to/your/local/jdk/dir
然後執行如下命令,設置系統的默認jdk:
$ sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/local/java/jdk1.6.0_38/bin/javaws 300
$ sudo update-alternatives --install /usr/bin/jar jar /usr/local/java/jdk1.6.0_38/bin/jar 300
$ sudo update-alternatives --install /usr/bin/javap javap /usr/local/java/jdk1.6.0_38/bin/javap 300
$ sudo update-alternatives --config java
安裝軟體包
能裝的都要裝上,以免編譯失敗,又要回過頭重裝,如下:
$ sudo apt-get install build-essential make gcc g++ libc6-dev texinfo
libncurses-dev git-core gnupg flex bison zip curl ncurses-dev libsdl-dev
zlib1g-dev ia32-libs libxml2-utils lzma
編譯源碼
到源碼目錄下,如下:
$ source build/envsetup.sh
$ lunch
選擇arm平台。
$ make -jn
n為CPU個數的兩倍,主要是提高編譯速度。
可能的錯誤
編譯過程碰到如下錯誤:
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
一般情況是因為前面的javap沒有配置所致。如果必須的軟體包沒有安裝,也會有類似的提示,仔細向上翻看錯誤提示,找到真正的錯誤地方,安裝對應的軟體包即可。
Ⅳ Ubuntu 嵌入式交叉編譯環境搭建
在一種計算機環境中運行的編譯程序,能編譯出在另外一種環境下運行的代碼,我們就稱這種編譯器支持交叉編譯,這個編譯過程就叫交叉編譯。簡單地說,就是在一個平台上生成另一個平台上的可執行代碼,而這種工具就是交叉編譯器(cross compiler)。
安裝前的絮叨,首先簡單介紹一下,所謂的搭建交叉編譯環境,即安裝、配置交銀叢知叉編譯工具鏈。在該環境下編譯出嵌入式linux系統所需的操作系統、應用程序等,然後再上傳到目標機上。 交叉編譯工具鏈是為了編譯、鏈接、處理和調試跨平台體系結構的程序代碼。對於交叉開發的工具鏈來說,在文件名稱上加了一個前綴,用來區別本地的工具鏈。例如,arm-linux-表示是對arm的交叉編譯工具鏈;arm-linux-gcc表示是使用gcc的編譯器。除了體系結構相關的編譯選項以外,其使用方法與Linux主機上的gcc相同,所以Linux編程技術對於嵌入式同樣適用。不過,並不是任何一個版本拿來都能用,各種軟體包往往存在版本匹配問題。例如,編譯內核時需要使用arm-linux-gcc-4.3.3版本的交叉編譯工具鏈,而使用arm-linux-gcc-3.4.1的交叉編譯工具鏈,則會導致編譯失敗。 那麼gcc和arm-linux-gcc的區別是什麼呢?區別就是gcc是linux下的C語言編譯器,編譯出來的程序在本地執行,而arm-linux-gcc用來在linux下跨平台的C語言編譯器,編譯出來的程序在目標機(如ARM平台)上執行,嵌入式開發應使用嵌入式交叉編譯工具鏈。
將壓縮包arm-linux-gcc-4.4.3.tar.gz存放在一個目錄下,這個目錄就是你等會解壓縮的目錄,以後這個目錄就不能隨便刪掉了,我的存放路徑是 /home/song/software,如下圖,記住這個路徑,等會還會用到。
使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz將software文件夾下的arm-linux-gcc-4.4.3.tar.gz解壓縮安裝到當前目錄下如下圖
通過下圖可以看鋒消到解壓成功了,並且解壓後的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夾下,如下圖所示,這個存放路徑可得記住,如下圖
接下來配置系統環境變數,把交叉編譯工具鏈的路徑添加到環境變數PATH中去,這樣就可以在任何目錄下使用這些工具。記下上一步中的安裝路徑,使用命令:vim /etc/profile 編輯profile文件,添加環境變數。
在profile中最後一行添加:export PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin這個路徑就是那個bin目錄所在的路徑,可能你的不一樣,按照你實際的目錄填就可以了,如下圖32行, 編寫完退出並保存
使用命令:source /etc/profile 使環境變數生效
在終端上輸入命令arm-linux再按Tab鍵,可以看到下圖,說明環境變數設置成功了
使用命令:arm-linux-gcc -v 會出現下面的錯誤提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found
意思是出現這種問題的原因是由於Ubuntu12.04用的是64位的,解決方法就是使用命令:sudo apt-get install ia32-libs 裝一些32位的庫。
待安裝完32位的庫之後,再使鄭鎮用命令:arm-linux-gcc -v,這一次就成功了,如下圖
驗證,編譯一個hello.c文件
使用命令:arm-linux-gcc hello.c -o hello 看是否編譯成功 可見成功生成了二進制文件。
總結:其實在安裝過程中,會出現各種各樣的錯誤,一般就是庫文件安裝不完整,大家可以把錯誤信息直接復制,到網上搜索一下,一般都能解決,這里希望大家在學習Linux時多一點耐心。