首页 > 代码库 > 交叉编译mips(ubuntu)

交叉编译mips(ubuntu)

使用buildroot进行交叉编译,网上的教程很多,按照教程一步一步就OK了。主要记录几个遇到的问题。

mips & gdb

http://md.purpleroc.com/cross%20compile/embedded%20tools/technic/2015/09/07/Cross_compile.html

 
设置环境变量
http://jingyan.baidu.com/article/db55b609a3f6274ba30a2fb8.html
 
 
在低版本的编译过程中,有可能出现这样的错误:
make menuconfig出错
make[1]: Leaving directory `/home/router/buildroot/support/kconfig‘
make: *** [/home/router/buildroot/output/build/buildroot-config/mconf] Error 2
 
错误原因:ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序已经不再使用。编译一些老的程序,还是会经常碰到。
解决:
在make menuconfig之前加上:
sudo apt-get install libncurses5-dev
参考:https://www.oschina.net/question/938191_2142882
 
当本机是kernel2.6的时候,使用buildroot2016.08编译的时候出错。错误如下:
package/linux-headers/linux-headers.mk:137: *** LINUX_HEADERS_SITE cannot be empty when LINUX_HEADER
因为找不到相应的header,我这里是在buildroot2016.08中编译kernel为2.6的时候出错。
猜测
原因是因为相应的kernel header找不到。
在toolchain中选择内核时,会列举一部分,也可以手动选择。猜测,列举的部分是buildroot已经包含,而手动选择会需要去进行下载,可能是通过linux的渠道(我这里是ubuntu,猜测是ubuntu的源)。
而现在是 2.6可能已经不包含在以前的下载路径中(我在使用sudo apt-cache search linux-image搜索内核时找不到2.6的内核),而我在ubuntu14.04(kernel为3.13),手动选择为3.13时make没有出现该错。
 
解决
选择一个低版本的buildroot,我这里选择的是2011.08
https://buildroot.org/downloads/
 

交叉编译mips(ubuntu)