和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位平台程序。