一.环境
- 主机:ubuntu
- 开发板: arm+linux
二.configure分析
- --build --host --target介绍
- --build为主机环境,如ubuntu,redhat等等,执行gcc -v命令可以查看到Target变量,--build=为Target变量的值,--build如果不填写的话,系统会默认填写主机环境。
- --host为目标环境,表示编译好的软件包在什么环境下执行,如果--host和--build相同,则编译好的软件包在主机环境执行,如果--host和--build不同则为交叉编译,目标环境为开发板,--host如果不填写的话,系统会默认填写主机环境。执行arm-linux-gcc -v(交叉编译每个人不一样,学会灵活运用)命令可以查看到Target变量,--build=为Target变量的值。
- --target仅仅用于编译交叉工具链,当交叉工具编译生成软件包时,这个软件包执行的环境就是--target的值。比如gcc编译生成的软件包的--target为主机环境,通过gcc -v查看target可以知道该值。arm-linux-gcc编译生成的软件包的--target为开发板环境,通过arm-linux-gcc -v查看target可以知道该值。
- 目标环境为本机,configure最小命令为./configure。目标环境为开发板,configure最小命令为./configure --host=arm-linux。因为--build和--host不填写的话,系统会默认填写为主机环境。
- 通过./configure -h查看configure详细配置选项,每个人的情况不一样,需自行配置,但只要保证最小命令,就能正确编译。
- 常见错误:
- 交叉环境没有设置,需把arm-linux-gcc的路径添加到PATH变量,不然无法找到交叉编译器,从而无法交叉编译
- 由于反复设置环境,可能导致环境污染,最好进行make distclean或者重新解压新的源码进行编译,否则会出错
- 开源软件的源码包存在很大的差异,且缺乏管理,如果按照上面那的步骤编译不成功,可以尝试更多的版本,版本出问题解决起来最麻烦
- 如果编译出现问题,可以先把问题复制到百度或者谷歌进行搜索,找到解决问题办法,用于解决简单的问题。