使用buildroot进行交叉编译,网上的教程很多,按照教程一步一步就OK了。主要记录几个遇到的问题。
mips & gdb
http://md.purpleroc.com/cross%20compile/embedded%20tools/technic/2015/09/07/Cross_compile.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