在從事嵌入式軟件開發時,常常遇到不同的平臺需要移植一些測試程序。本文目的:掌握交叉編譯概念;學會如何搭建相應的交叉編譯環境。
1、交叉編譯工具鏈(cross compilation tool chain)
交叉編譯通俗地講就是在一種平臺上編譯出能運行在體系結構不同的另一種平臺上的程序。交叉編譯工具鏈解決本地編譯的侷限性,主要原因是開發平臺的多樣性,導致編譯工具(軟件硬件)以及編譯方式等的不同,本地開發的程序無法在其他平臺運行。只需要在主機平臺上安裝對應的交叉編譯工具鏈,然後用這個交叉編譯工具鏈編譯我們的源代碼,最終生成可在目標平臺上運行的代碼。
幾種交叉編譯工具鏈:
arm-none-linux-gnueabi-gcc、arm-linux-gnueabihf-gcc、aarch64-linux-gnu-gcc、arm-none-elf-gcc、arm-none-eabi-gcc
arm-none-linux-gnueabi-gcc 下載地址
2、交叉編譯工具安裝及環境變量配置
參考以Linaro爲例:
(1)首先在/usr/local/目錄下新建名爲 ARM-toolchain的文件夾用於存放交叉編譯工具鏈。
mkdir /usr/local/ARM-toolchain
(2)接下來就是安裝交叉編譯工具鏈
cd /usr/local/ARM-toolchain
sudo wget http://releases.linaro.org/components/toolchain/binaries/6.1-2016.08/ar-m-linux-gnueabi/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi.tar.xz
xz -d gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi.tar.xz
tar xvf gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi.tar
Tips:
①有網絡的情況下,用wget下載交叉編譯工具鏈的包;沒網絡就老實的自己拷貝過來吧。
②xz -d 命令是用來將tar.xz文件轉爲tar文件的,如果系統沒有xz命令,那請安裝吧,任意門---Linux下.tar.xz文件的解壓教程詳解
(3)接下來需要把交叉編譯工具鏈的路徑添加到Linux系統的環境變量中
三種設置環境變量方式
(1)設置臨時變量---終端直接輸入,退出之後就沒得了(不建議)
export PATH="/usr/local/ARM-toolchain/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi/bin:$PATH"
(2)設置當前用戶環境變量
vi ~/.bash_profile
vi ~/.bashrc
編輯當前用戶的兩個文件任意一個即可,在其末行加入①的變量
保存後執行,讓環境變量立即生效。
source ~/.bashrc # (or .profile)
(3)設置環境變量,對所有用戶適用,PATH設置同上
vi /etc/profile
3、查看arm-gcc是否安裝,我們可以在終端執行 arm-linux-gnueabi-gcc –v 命令來查看交叉編譯工具鏈的版本信息。
下面這部分來記錄一下自己在QT開發時,需要將開發的界面移植到不同的平臺運行。
①QtCreator添加arm-gcc交叉編譯工具鏈
②添加kits