交叉工具链

一、交叉工具链。
1、什么是交叉工具链?
1)回顾gcc编译器。
作用:将高级语言C转换目标程序。

             GCC编译器                         ubuntu平台
   高级语言C文件   ---------------->  二进制文件(x86架构)   -----------------> 程序效果

gcc编译器:在ubuntu编译,在ubuntu运行。  
编译命令:gcc xxx.c -o xxx
执行命令:./xxx

gcc编译器是ubuntu自带的,它的路径:
gec@ubuntu:~$ which gcc
/usr/bin/gcc

结论:在同一个平台上编译运行,那么这个编译过程就称之为本地编译。

2)交叉工具链。
其实交叉工具链就是一个编译器,作用与gcc一样,都是将高级语言C转换成目标程序。

             交叉工具链                       ARM平台
   高级语言C文件  -------------------> 二进制文件(ARM架构)   -----------------> 程序效果

交叉工具链:在ubuntu编译,在ARM平台运行。
编译命令: arm-linux-gcc xxx.c -o xxx
执行命令: ./xxx

交叉工具链在纯净版本的ubuntu是没有的,所以想使用工具链,必须先移植工具到ubuntu下。

结论:在不同的平台上编译运行,那么这个编译过程就称之为交叉编译。

二、如何安装工具链到ubuntu中呢?
工具链资源:arm-5.4.0.tar.gz

1、先把工具链放置到共享目录下。
2、为工具链创建一个安装目录。
   sudo mkdir /usr/5.4.0_arm/
   sudo chmod 777 /usr/5.4.0_arm/

3、直接将工具链资源解压到/usr/5.4.0_arm/目录下即可。
   tar zxvf arm-5.4.0.tar.gz -C /usr/5.4.0_arm/

4、安装结果。
/usr/5.4.0_arm/5.4.0/usr/bin/arm-linux-gcc。  -> 这个文件就是交叉工具链。 

   练习1: 安装工具链。
   练习2: 在任何的路径下都能够使用arm-linux-gcc来编译程序。

思路:把arm-linux-gcc所在地"/usr/5.4.0_arm/5.4.0/usr/bin/"加入到环境变量PATH中。

1)先打开脚本。
   gedit ~/.bashrc

2)在文件的末尾添加以下的这句话。
   export PATH=$PATH:/usr/5.4.0_arm/5.4.0/usr/bin

3)生效脚本。
   source ~/.bashrc

4)可以在任何的路径下使用arm-linux-gcc。
   arm-linux-gcc hello.c -o hello

注意点:
当执行时,如果提示libmpfr.so:No such file or diretcory,那么需要这样处理:
把以下的这句话写入到脚本中:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/5.4.0_arm/5.4.0/usr/lib

三、使用交叉编译与本地编译有什么区别?
1、本地编译。
   gcc hello.c -o hello 

查看可执行文件的架构:
gec@ubuntu:~$ file hello
hello: ELF 64-bit LSB executable,  -> 代表这个文件可执行
              x86-64,  -> ubuntu平台的架构  -> 说明该文件只能在x86平台运行。

2、交叉编译。
   arm-linux-gcc hello.c -o hello

查看可执行文件的架构:
gec@ubuntu:~$ file hello
hello: ELF 32-bit LSB executable, -> 代表这个文件可执行
                 ARM, -> ARM平台的架构   -> 说明该文件只能在ARM平台运行。


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值