以下为转载链接,以备以后查看所用。
http://blog.sina.com.cn/s/blog_1543d98ce0102xykc.html
一、build host target 的区别
(1)ubuntu16.04 的参数信息如下(gcc -v 查看)
build:执行代码编译的主机,正常的话就是你的主机系统。
host:编译出来的二进制程序所执行的主机,因为绝大多数是如果本机编译,本机执行。所以这个值就等于build。
--build=x86_64-linux-gnu :执行代码编译的主机
--host=x86_64-linux-gnu :编译出来的二进制程序所执行的主机
--target=x86_64-linux-gnu :只有在建立交叉编译环境的时候用到,正常编译和交叉编译都不会用到。他用build主机上的编译器,编译一个新的编译器(binutils, gcc,gdb等),这个新的编译器将来编译出来的其他程序将运行在target指定的系统上。
(2)搭建交叉编译环境,或者是交叉编译程序
只有host !=build的时候编译才是交叉编译。否则就是正常编译
例子:
./configure --build=i686-linux-gnu --host=arm-poky-linux-gnueabi
其中--build=i686-linux-gnu 为本机编译器的名字(ubuntu16.04)
--host=arm-poky-linux-gnueabi(开发板的名字)
开源软件的交叉编译步骤:
./configure –help 查看帮助文档
./configure –prefix=安装路径 --build=i686-linux-gnu --host=arm-poky-linux-gnueabi
(3)制作交叉编译工具链
--prefix 指明安装路径
二、 交叉编译注意事项:
执行一个程序时有没有sudo 对环境变量的影响很大
例如 :当以普通用户登录时 ,将环境变量加在了当前用户下的.bashrc中,当以sudo 执行时,此刻环境变量就找不到了,因为此时找的是root下的.bashrc ,而这个文件中并没有所添加的环境变量。
当交叉编译工具链的环境变量在普通用户下时,在执行配置脚本只能用./configure
如果针对多用户都需要用,建议把环境变量加在root下的.bashrc中
三、 环境变量在自己写的脚本的执行: source 相当于 .
source 读取脚本的环境变量输出到 本shell 中
此时用 source imx6qt.sh 或者 . imx6qt.sh
四、当重新交叉编译时:
必须执行 make clean –w 删除makefile文件
make distclean