嵌入式交叉編譯器如何構建
第一步,你需要下載QT源代碼(4.8的編譯比較容易),然後通過 ./configure (參數自己定,不懂看readme)接下來就是在QT CREATE裡面配置了,如下: 工具-->選項--->構建和運行 1. 編譯器: 點擊添加: "名稱"隨意 "編譯器路徑" **/arm-none-linux-gnueabi-g...
2. 嵌入式ARM linux操作系統中如何構建交叉開發環境
這個問題相當專業了,之前我去周立功那邊了解過的。
按照以下步驟進行安裝:
1) 安裝32位的兼容庫和libncurses5-dev庫
在安裝交叉編譯工具之前需要先安裝32位的兼容庫和libncurses5-dev庫,安裝32兼容庫需要從ubuntu的源庫中下載,所以需要在Linux主機系統聯網的條件下,通過終端使用如下命令安裝:
vmuser@Linux-host ~$sudo apt-get install ia32-libs
若Linux主機系統沒有安裝32位兼容庫,在使用交叉編譯工具的時候可能會出現錯誤:
-bash: ./arm-fsl-linux-gnueabi-gcc: 沒有那個文件或目錄
在終端中使用如下命令則可以安裝libncurses5-dev庫。
vmuser@Linux-host ~$sudo apt-get install libncurses5-dev
如果沒有安裝此庫,在使用make menucofig時出現如下所示的錯誤:
*** Unableto find the ncurses libraries or the
*** required headerfiles.
*** 'makemenuconfig' requires the ncurses libraries.
***
Installncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 錯誤 1
make: *** [menuconfig] 錯誤 2
2) 安裝交叉編譯工具鏈
將交叉編譯工具「gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2」文件通過U盤的方式拷貝到Linux主機的「/tmp」目錄下,然後執行如下命令進行解壓安裝交叉編譯工具鏈:
vmuser@Linux-host ~$ cd /tmp
vmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/
vmuser@Linux-host /tmp$ # 輸入vmuser用戶的密碼「vmuser」
執行完解壓命令後,交叉編譯工具鏈將被安裝到「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0」目錄下。交叉編譯器的具體目錄是「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin」,為了方便使用,還需將該路徑添加到PATH環境變數中,其方法為:修改「/etc/profile」文件,具體操作方法如下:
在終端中輸入如下指令
vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示輸入密碼,則輸入「vmuser」
用vi編輯器打開「/etc/profile」文件後,在文件末尾增加如下一行內容:
export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin
文件修改並保存後,再在終端中輸入如下指令,更新環境變數,使設置生效。
vmuser@Linux-host ~$source /etc/profile
在終端輸入arm-fsl-linux-gnueabi-並按TAB鍵,如果能夠看到很多arm-fsl-linux-gnueabi-前綴的命令,則基本可以確定交叉編譯器安裝正確,如下圖所示。
3. 如何為嵌入式開發建立交叉編譯環境
如果你確實需要自己建立交叉開發環境,那我們建議您使用某些特定的腳本,比如 crosstool 等; 我們覺得你還是先暫時不要把時間花在如何建立這個環境上,去下載個已經做好了的來使用吧
4. 如何搭建交叉編譯環境
交叉編譯環境就是在Windows下的東西拿到Linux下編譯運行吧,我個人是在Linux啟動了samba伺服器,然後將文件夾映射到Windows下,在Windows下使用vc 6.0編程序然後到Linux下編譯的。不知道能不能對你有些幫助。
下載的rpm包,可以使用rpm -ivh 包路徑進行安裝
5. 如何利用Eclipse C/C++搭建嵌入式ARM開發環境
由於覺得在Linux下不方便編寫代碼,所以准備在windows上搭建開發環境,其實在Linux上也搭建好了,但是使用起來不是很人性化,尤其是文件比較多的時候就很麻煩。下面就選擇在windows上用Eclipse做開發。【後來發現還是需要在Linux下編程,因為Windows下沒法包含Linux下的一些頭文件,所以下面也介紹Linux環境下的Eclipse搭建】。
Windows下的Eclipse環境搭建:
1. 下載並安裝Eclipse C/C++
2. 下載交叉編譯器,之前在Linux都用的arm-linux-gcc,後來使用TI的ti-sdk-am335x-evm-08開發包,裡面安裝的編譯器是arm-none-linux-gnueabi-gcc,都是能用的,所以我也選擇了arm-none-linux-gnueabi-gcc作為交叉編譯器,下載windows平台的編譯器,然後安裝。
下載地址:http://www.veryarm.com/arm-none-linux-gnueabi-gcc
3. 開啟Eclipse的ssh遠程登錄功能,我分別開啟了Beaglebone Black和Linux的ssh terminal,操作起來很是方便。
4. 新建C項目工程「hello」,編寫簡單的hello代碼,注意選擇交叉編譯選項,交叉編譯器前綴「arm-none-linux-gnueabi-」交叉編譯器路徑選擇arm-none-linux-gnueabi-gcc安裝的路徑「…Linuxin」,在此文件夾下有arm-none-linux-gnueabi-gcc.exe、arm-none-linux-gnueabi-gdb.exe等,還有cs-make.exe,這里需要把「cs-make.exe」改成「make.exe」,因為Eclipse不認cs-make.exe編譯的時候會報錯的。
圖文安裝參考:http://www.linuxidc.com/Linux/2016-03/129577.htm
5. 調試(構建Ctrl+B)的時候會自動生成makefile,生成編譯結果,放到ARM嵌入式平台運行就可以了,成功執行並輸出「hello」。
Linux下的Eclipse環境搭建:
官網下載http://www.eclipse.org/downloads/
發下是收費的
sudo apt-get install eclipse直接就安裝了
然後sudo eclipse –s啟動後發現「窗口->打開視圖」裡面沒有ssh遠程登錄的選項,網路一下發現它是Eclipse的插件,查詢下這個軟體:sudo apt-cache search Remote System Explorer,發現一個eclipse-rse,就是它了,然後直接安裝:sudo apt-get install eclipse-rse
重啟eclipse
新建工程時發現沒有C/C++工程,只有Java工程,再次搜索sudo apt-cache search eclipse C/C++
發現其中一條:
eclipse-cdt - C/C++ Development Tools for Eclipse
繼續安裝:
sudo apt-get install eclipse-cdt
再次重啟eclipse,就有了C/C++項目,高興ing。
新建C工程,添加編譯器:
arm-none-linux-gnueabi-
/opt/toolschain/4.4.3/bin
編寫hello程序,編譯OK,在BBB上執行,成功!
6. 如何搭建嵌入式開發的硬體環境
前言
首先,這個教程在僅使用附帶的光碟鏡像文件里的資料的情況下,所搭建的嵌入式 ARM 開發環境可以滿足 ARM 核為 ARM920T 及 CORTEX-A8 的嵌入式開發需求。
其次,搭建針對處理器為 ARM920T 的開發環境步驟如下:
WINDOWS 系統:
1、 用 WINRAR 或 7zip 打開鏡像文件 Linux-dev.iso,將/WIN32/Daemon_Tools_4.46.1.328.exe 拖出來,
安裝後運行;
2、 使用 Daemon 載入鏡像文件 Linux-dev.iso 後,找到並雙擊/vmplayer/VMware-player-5.0.1-894247.exe 運行,安裝完成;
3、 將/VMware-linux-tools.iso 復制到任何地方,譬如 D:\Virtual Machines\ 文件夾下;4、 將文件夾/Ubuntu 復制到電腦的任何地方,譬如 D:\Virtual Machines\ 文件夾下;
5、 打開 VMware Player,這是一個免費的軟體,所以不需考慮不能使用的情況,更不需破解。效果圖如下:
嵌入式開發環境的搭建
點擊」Open a Virtual Machine」,找到剛才復制的 Ubuntu 文件夾,選中 Ubuntu.vmx 這個文件:
嵌入式開發環境的搭建
後點擊打開;
6、 點擊」Edit virtual machine settings」,這里需要注意的是,若你的電腦 CPU 是單核的,需將」Processors」由 2 設置為 1,否則,不能運行。選擇」CD/DVD (IDE)」,之後點擊右邊的」Browse…」,找到並選擇剛才復制的 VMware-linux-tools.iso,之後點擊」Options」進入另一個設置界面;
7、 選擇第三個」Shared Folders」,在右邊將其設置為」Always enabled」,再點擊下面的」Add…」,選擇一個在硬碟上新建的空文件夾,譬如 D:\Virtual Machines\shared 文件夾,點擊」Next》」,之後點擊」Enable this share」,最後在設置主界面點擊」OK」完成設置;
8、 將虛擬光碟機載入的光碟中 Linux 文件夾中的所有文件都復制到上一步新建的空文件夾,譬如
D:\Virtual Machines\shared 文件夾下;
9、 在 VMware Player 下點擊圖標 以運行虛擬機 Linux,啟動後可以看到桌面上有一個光碟的圖標;
10、 在 Linux 桌面右鍵後選擇」Open in terminal」,之後切換到/tmp 目錄:cd /tmp ;11、 執行命令 tar zxf /media/cdrom0/VMwareTools-9.2.2-893683.tar.gz ,等待約一分鍾後運行完畢;
12、 切換目錄:cd 。/vmware-tools-distrib/ ;
13、 執行命令:sudo 。/vmare-install.pl ,用戶」user」的密碼為 redeem2012 ;
14、 下面出現很多問題,[yes]或[no],那麼就可以一直點擊鍵盤 ENTER 鍵選擇默認設置,直至安裝完成;15、 人,活著,要有耐心——這個過程稍長,顯示最後兩行為」Enjoy, --the WMware team」時就安裝完成了;
16、 以上幾個步驟如下:
嵌入式開發環境的搭建
17、 執行命令:sudo reboot 以重啟;
18、 啟動後在桌面右鍵選擇」Open in terminal」,輸入命令:cd /mnt/hgfs/shared ,當然若之前選擇的空享空文件夾名稱與 shared 不一樣,可能不是這個目錄,唉,管不了這么多了;19、 查看目當下文件如下:
嵌入式開發環境的搭建
20、 安裝 libusb-1.0.9.tar.bz2,依次輸入以下命令:tar jxf libusb-1.0.9.tar.bz2 、
cd libusb-1.0.9 、 。/configure --prefix=/usr 、 make 、 sudo make install ,注意最後一步需要輸入密碼 redeem2012,完了之後返回原目錄: cd 。。/ ;21、 安裝 readline-6.2.tar.gz,依次輸入以下命令:tar zxf readline-6.2.tar.gz 、 cd readline-6.2 、。/configure --prefix=/usr 、 make 、 sudo make install ,完了之後返回原目錄:cd 。。/ ;
22、 安裝交叉編譯器:sudo tar arm-linux-gcc-3.4.5.tar.bz2 -C /home ;
23、 更改環境變數:gedit /home/user/.profile ,在最後一行添加這么一句:export PATH=$PATH:/home/user/gcc-3.4.5-glibc-2.3.6/bin ,保存後退出
24、 切換回用戶主目錄:cd ~ ;
25、 執行命令:tar jxf /mnt/hgfs/shared/JLink_Linux_V422.tar.bz2 ;
26、 依次執行以下命令:cd JLink_Linux_V422/ 、 sudo cp libjlinkarm.so.* /usr/lib ,現在就可以
運行 JLink 了: sudo 。/JLinkExe ,但要注意這么一點:由於現在運行的是 windows 系統下的虛擬機, Linux 操作系統無法訪問到 JLink,那麼就需要按下圖所示選擇將連接到電腦的 JLink 直接送給虛擬機中運行的 Linux。我沒有 JLink,所以下圖中沒有,你需要自己選擇硬體並點擊箭頭後再點擊」connect」:
嵌入式開發環境的搭建
另外,下面需要安裝 minicom,也需要按上圖將串口連接到 Linux 操作系統;
27、 這一步安裝minicom。將虛擬機文件夾 Ubuntu 下的 minicom_2.3-1ubuntu2_i386.deb 復制到shared文件下,之後執行命令:sudo dpkg --install /mnt/hgfs/shared/ minicom_2.3-1ubuntu2_i386.deb
到這一步,windows 系統下的嵌入式 ARM 開發環境搭建完成了。重啟一下更好。
至於 Linux 系統下的配置,這要復雜得多,因為系統情況完全不一樣,因而,這里不再給出,當然,所有的軟體也跟上面的完全一樣。
另外,minicom、JLink 的配置和使用,這里就不說了,自己到網上去找吧,若搞不好,就當自虐了。反正我已經送佛到西了,整個過程不需要仍何網路,不需要上網
所附的光碟鏡像文件中還有一些 windows 下的軟體,如 SecureCRT、arm-none-linux-gcc 等,這些也能用到,只不過我沒那個心情講更多了,以上的配置已經完全足夠了。
網路是個好東西,沒有網路,就沒有 LINUX,也沒有快速學習的條件。所以——現在,自學去吧。
7. 如何建立Linux下的ARM交叉編譯環境
首先安裝交叉編譯器,網路「arm-linux-gcc」就可以一個編譯器壓縮包。
把壓縮包放到linux系統中,解壓,這樣就算安裝好了交叉編譯器。
設置編譯器環境變數,具體方式網路。如打開 /etc/bash.bashrc,添加剛才安裝的編譯器路徑 export PATH=/home/。。。/4.4.3/bin:$PATH。這樣是為了方便使用,用arm-linux-gcc即可,不然既要帶全路徑/home//bin/arm-linux-gcc,這樣不方便使用。
編譯c文件。和gcc編譯相似,把gcc用arm-linu-gcc代替就是了。編譯出來的就可以放到arm上運行了。</ol>
8. Linux嵌入式交叉編譯工具鏈問題 淺談
簡介
交叉編譯工具鏈是一個由編譯器、連接器和解釋器組成的綜合開發環境,交叉編譯工具鏈主要由binutils、gcc和glibc 3個部分組成。有時出於減小libc庫大小的考慮,也可以用別的c庫來代替glibc,例如uClibc、dietlibc和newlib。交叉編譯工具鏈主要包括針對目標系統的編譯器gcc、目標系統的二進制工具binutils、目標系統的標准c庫glibc和目標系統的Linux內核頭文件。第一個步驟就是確定目標平台。每個目標平台都有一個明確的格式,這些信息用於在構建過程中識別要使用的不同工具的正確版本。因此,當在一個特定目標機下運行GCC時,GCC便在目錄路徑中查找包含該目標規范的應用程序路徑。GNU的目標規范格式為CPU-PLATFORM-OS。例如,建立基於ARM平台的交叉工具鏈,目標平台名為arm-linux-gnu。
交叉編譯工具鏈的製作方法
分步編譯和安裝交叉編譯工具鏈所需要的庫和源代碼,最終生成交叉編譯工具鏈。
通過Crosstool腳本工具來實現一次編譯生成交叉編譯工具鏈。
直接通過網上(ftp.arm.kernel.org.uk)下載已經製作好的交叉編譯工具鏈。
方法1相對比較困難,適合想深入學習構建交叉工具鏈的讀者。如果只是想使用交叉工具鏈,建議使用方法2或方法3構建交叉工具鏈。方法3的優點不用多說,當然是簡單省事,但與此同時該方法有一定的弊端就是局限性太大,因為畢竟是別人構建好的,也就是固定的沒有靈活性,所以構建所用的庫以及編譯器的版本也許並不適合你要編譯的程序,同時也許會在使用時出現許多莫名的錯誤,建議你慎用此方法。
方法1:分步構建交叉編譯工具鏈
下載所需的源代碼包
建立工作目錄
建立環境變數
編譯、安裝Binutils
獲取內核頭文件
編譯gcc的輔助編譯器
編譯生成glibc庫
編譯生成完整的gcc
由於在問答中的篇幅,我不能細述具體的步驟,興趣的同學請自行閱讀開源共創協議的《Linux from scratch》,網址是:linuxfromscratch dot org
。
方法2:用Crosstool工具構建交叉工具鏈(推薦)
Crosstool是一組腳本工具集,可構建和測試不同版本的gcc和glibc,用於那些支持glibc的體系結構。它也是一個開源項目,下載地址是kegel dot com/crosstool。用Crosstool構建交叉工具鏈要比上述的分步編譯容易得多,並且也方便許多,對於僅僅為了工作需要構建交叉編譯工具鏈的你,建議使用此方法。
運行which makeinfo,如果不能找見該命令,在解壓texinfo-4.11.tar.bz2,進入texinfo-4.11目錄,執行./configure&&make&&make install完成makeinfo工具的安裝
准備文件:
下載所需資源文件linux-2.4.20.tar.gz、binutils-2.19.tar.bz2、gcc-3.3.6.tar.gz、glibc- 2.3.2.tar.gz、glibc-linuxthreads-2.3.2.tar.gz和gdb-6.5.tar.bz2。然後將這些工具包文件放在新建的$HOME/downloads目錄下,最後在$HOME/目錄下解壓crosstool-0.43.tar.gz,命
令如下:
#cd$HOME/
#tar–xvzfcrosstool-0.43.tar.gz
建立腳本文件
接著需要建立自己的編譯腳本,起名為arm.sh,為了簡化編寫arm.sh,尋找一個最接近的腳本文件demo-arm.sh作為模板,然後將該腳本的內容復制到arm.sh,修改arm.sh腳本,具體操作如下:
# cd crosstool-0.43
# cp demo-arm.sh arm.sh
# vi arm.sh
修改後的arm.sh腳本內容如下:
#!/bin/sh
set-ex
TARBALLS_DIR=$HOME/downloads#定義工具鏈源碼所存放位置。
RESULT_TOP=$HOME/arm-bin#定義工具鏈的安裝目錄
exportTARBALLS_DIRRESULT_TOP
GCC_LANGUAGES="c,c++"#定義支持C,C++語言
exportGCC_LANGUAGES
#創建/opt/crosstool目錄
mkdir-p$RESULT_TOP
#編譯工具鏈,該過程需要數小時完成。
eval'catarm.datgcc-3.3.6-glibc-2.3.2.dat'shall.sh--notest
echoDone.
建立配置文件
在arm.sh腳本文件中需要注意arm-xscale.dat和gcc-3.3.6-glibc-2.3.2.dat兩個文件,這兩個文件是作為Crosstool的編譯的配置文件。其中arm.dat文件內容如下,主要用於定義配置文件、定義生成編譯工具鏈的名稱以及定義編譯選項等。
KERNELCONFIG='pwd'/arm.config#內核的配置
TARGET=arm-linux#編譯生成的工具鏈名稱
TARGET_CFLAGS="-O"#編譯選項
gcc-3.3.6-glibc-2.3.2.dat文件內容如下,該文件主要定義編譯過程中所需要的庫以及它定義的版本,如果在編譯過程中發現有些庫不存在時,Crosstool會自動在相關網站上下載,該工具在這點上相對比較智能,也非常有用。
BINUTILS_DIR=binutils-2.19
GCC_DIR=gcc-3.3.6
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.10-8(根據實際情況填寫)
GDB_DIR=gdb-6.5
執行腳本
將Crosstool的腳本文件和配置文件准備好之後,開始執行arm.sh腳本來編譯交叉編譯工具。具體執行命令如下:
#cdcrosstool-0.43
#./arm.sh
經過數小時的漫長編譯之後,會在/opt/crosstool目錄下生成新的交叉編譯工具,其中包括以下內容:
arm-linux-addr2linearm-linux-g++arm-linux-ldarm-linux-size
arm-linux-ararm-linux-gccarm-linux-nmarm-linux-strings
arm-linux-asarm-linux-gcc-3.3.6arm-linux-objarm-linux-strip
arm-linux-c++arm-linux-gccbugarm-linux-objmpfix-embedded-paths
arm-linux-c++filtarm-linux-gcovarm-linux-ranlib
arm-linux-cpparm-linux-gprofarm-linux-readelf
添加環境變數
然後將生成的編譯工具鏈路徑添加到環境變數PATH上去,添加的方法是在系統/etc/ bashrc文件的最後添加下面一行,在bashrc文件中添加環境變數
export PATH=/home/jiabing/gcc-3.3.6-glibc-2.3.2/arm-linux-bin/bin:$PATH
至此,arm-linux下的交叉編譯工具鏈已經完成,現在就可以使用arm-linux-gcc來生成試驗箱上的程序了!
9. 如何在ubuntu中搭建交叉編譯環境toolchain
1.安裝交叉編譯環境 sudo apt-get install gcc g++ libcc1 libg++ make gdb
2.安裝交叉編譯器 f
tp:
//ftp.
arm.linux.org.uk/pub/armlinux/toolchain/ 下載 cross -3.2.tar.bz2或者懶得去找乾脆
wget f
tp://ftp.
arm.linux.org.uk/pub/armlinux/toolchain/ cross -3.2.tar.bz2
解壓
sudo tar jxvf /home/zhaifang/cross -3.2.tar.bz2
sudo mv /home/zhaifang/usr/local/arm /usr/local
3.交叉編譯器加入路徑 sudo vi /etc/bash.bashrc後面加入
if [ -d /usr/local/arm ] ; then
PATH=/usr/local/arm/bin:'${PATH}'
fi
4.使環境生效 #source /etc/profile
5.檢查 echo $PATH 出現/usr/local/arm/bin說明成功了
6.測試 arm-linux-gcc -v