1 交叉編譯環境簡介
首先說一下什么是交叉編譯:我們在 ubuntu 中寫了一個程序,比如 main.c,然后使用 ubuntu 的編譯器進行編譯,生成的可執行文件自然可以在 ubuntu 中運行。但是生成的可執行文件可以在我們的開發板中能運行嗎?答案當然是否定的,原因很簡單,就是平臺不同,芯片架構不同。那我們如何使得 ubuntu 編譯出來的可執行文件在開發板上面運行呢,當然就要借助一些工具了,通過一些工具進行對程序編譯,生成在開發板上可以運行的文件,那這些工具我們把它叫做交叉編譯工具,把這種從一個平臺開發另一個平臺應用的方式稱為交叉編譯。
Toolchain 即交叉編譯工具,要在 ubuntu 編譯我們寫的應用程序使得生成開發板可以執行的文件,必須有這一套工具才可以進行!
2 交叉工具的配置
首先,我們查看是否已經有交叉編譯工具:
顯然沒有Toolchain!
注意:在本節教程的附件里編者已經給出了交叉編譯工具。
好的,配置OpenWrt 使得支持toolchain。在openwrt/目錄下運行 make menuconfig,并且選中 toolchain:
保存之后,編譯 OpenWrt:
$make V=99
編譯完成之后,我們可以查看是否有交叉編譯工具包的存在。
OK,解壓交叉編譯工具包:解壓完成后,然后我們cd 到解壓完成后的工具包中,再進入該工具包中的另一個目錄,找到 bin 文件夾,同樣cd 進去 bin 文件夾。
好了,現在我們就擁有交叉編譯工具了,我們要把交叉編譯工具的路徑保存在一個環境變量中,這樣做是為了,我們編譯程序時會根據這個環境變量找到交叉編譯工具的位置。以 root 的權限編輯如下文件:
#vi /etc/environment
注意:也可用sudo vi /etc/environment。
編輯前該文件的內容如下(我的ubuntu):
好的,增加我們交叉編譯工具路徑后(注意以冒號分隔)。為了讓這個環境變量起作用,我們重啟 ubuntu!
【注意】還可如下配置。
- 拷貝OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2到虛擬機中的/opt/目錄下
- 解壓OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2, 用命令
sudo tar -xvf OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2 //必須用超級用戶模式
- 編輯~/.bashrc文件, vi ~/.bashrc
在文件最后增加一行
export PATH=$PATH: /opt/OpenWrt-Toolchain-ramips-rt305x_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin
保存退出
- 運行 source ~/.bashrc 讓文件生效
- 測試
方法一:
在命令行下輸入 mipsel-o 然后按tab鍵看會不會自動補全
方法二:
輸入:mipsel-openwrt-linux- -v
3 測試交叉編譯環境
重啟完成后,我們編寫一個非常簡單的應用程序:
#include < stdio.h >
int main ()
{
printf(“hello world!n”);
return 0;
}
然后使用交叉編譯工具進行編譯!
編譯完成后生成可執行文件:
然后我們嘗試在ubuntu中運行可執行文件 main:
很顯然,這個可執行文件無法在 ubuntu 上運行,但是,卻可以在我們開發板中運行,我們把可執行文件移動到開發板中進行執行:
注意:main的權限應為777,否則無法運行。
【注意】交叉編譯工具鏈編譯的時報沒有STAGING_DIR,它在ubuntu上的/home/farsight/chaos_calmer/staging_dir,在ubuntu上鍵入下面命令
export STAGING_DIR=/home/farsight/chaos_calmer/staging_dir
或者放入.bashrc中,
$vi ~/.bashrc
在最后一行添加export STAGING_DIR=/home/farsight/chaos_calmer/staging_dir即可
$ source ~/.bashrc
審核編輯:湯梓紅
-
Ubuntu
+關注
關注
5文章
563瀏覽量
29751 -
交叉編譯
+關注
關注
0文章
32瀏覽量
12641 -
應用程序
+關注
關注
37文章
3268瀏覽量
57699 -
OpenWrt
+關注
關注
10文章
130瀏覽量
39302
發布評論請先 登錄
相關推薦
評論