和arm一樣要編譯出在mips架構上直接運行的應用程序 ,就要使用交叉編譯工具arm的一般是arm-none-linux-gcc同理mips也有自己的交叉編譯工mips-openwrt-linux-gcc在介紹交叉編譯環境之前先介紹一下openwrt源碼目錄
bin目錄是相應目標板的二進制文件含固件和SDK包等
build_dir 目錄是源碼自帶的交叉編譯鏈
package 是軟件包,通過該文件可以編譯出相應的軟件包
dl 是與這個openwrt對應編譯下載的源碼包
include 為openWrtr的各級Makefile
scripts - 一些perl腳本,用于軟件包管理
target – openWrt各個平臺平臺的相關代碼
要搭建交叉編譯環境首先要得到交叉編譯鏈,下載完成openwrt源碼包就有交叉編譯鏈在staging_dir 目錄
如圖
其中toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2 即為交叉編譯鏈
進去交叉編譯鏈
cd toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/
cd ./bin
ls
如圖
在圖片上可以看到很多mips-gcc的各種工具比如mips-openwrt-linux-gcc是gcc編譯器
mips-openwrt-linux-gdb 是調試器,mips-openwrt-linux-g++是C++編譯器,如果讓交叉編譯連接全局可用只需要將編譯連接的相關路徑加到etc/bash.bashrc就可以了。
如圖
注意寫在同一行,然后在終端輸入如下命令更新配置 source /etc/bash.bashrc
然后在vi 上輸入mips- +TAB鍵 自動補齊如圖
寫個C程序試試吧
1 #include
2
3 int main(int argc, const char *argv[])
4 {
5 printf("hello world \n");
6 return 0;
7 }
編譯一下
可以看到上面的警告說是找不到STAING_DIR,這個環境變量 只需要在/etc/bash.bashrc 文件中添加上這句即可
export STAGING_DIR=$STAGING_DIR:/home/linux64/mips/
file 看一下可執行文件
可以看到該執行文件為ELF格式mips架構的32位平臺程序。