交叉编译

交叉编译简介

交叉编译是在一个平台上生成另一个平台上的可执行代码

gcc a.c    代码编译

编译就是生成一个在本平台可执行的代码

a.out     生成的可执行文件

故交叉编译就是在一个平台编译一个可以在另一平台可执行的程序

为什么要交叉编译

有的平台没有办法安装想要的编译器,平台空间有限,内存不足以安装编译器

硬件不同,程序在不同环境中运行的条件不同,所以要对应的编译工具做编译成对应目标平台的可执行文件

交叉编译工具链

工具下载:

arm-linux-gnueabihf-gcc 编译工具

http://github.com/raspberrypi/

unzip tools-master.zip 解压文件

临时有效:

echo $PATH 查看环境变量

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/yangyingchun/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
配置PATH环境变量

只能配置当时打开的命令终端窗口的

永久有效:

修改工作目录下的.bashrc文件,是隐藏文件,是配置命令终端的

vi /home/yang/.bashrc 打开要修改的配置文件

在文件最后一行加入配置的环境变量
修改原有的配置文件
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/yangyingchun/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

source /home/yang/.bashrc 加载这个配置文件,使其马上生效

scp test_1 pi@192.168.22.33:/home/pi 把文件test_1复制到树莓派

带wiringPi库的交叉编译

正常是 gcc test.c -lwiringPi 就可以编译出树莓派能用的库

有时也可以 gcc test.c -I ./ -lwiringPi 通过 -I 去找后面 ./ 路径下的lwiringPi库

可以直接复制树莓派的库libwiringPi.so.2.50到linux

scp libwiringPi.so.2.50 pi@192.168.22.33:/home/yang

软链接:1

  • 软链接文件类似于Windows的快捷方式
  • 在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息
  • 它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间

具体用法是:ln -s 源文件 目标文件

ln -s libwiringPi.so.2.50 libwiringPi.so

硬链接:

  • 没有参数-s
  • 它会在你选定的位置上生成一个和源文件大小相同的文件

用法:
ln libwiringPi.so.2.50 libwiringPi.so

无论是软链接还是硬链接,文件都保持同步变化

编译

arm-linux-gnueabihf-gcc demo2.c -I /home/yangyingchun/lessonPI/WiringPi/wiringPi -L /home/yangyingchun/lessonPI -lwiringPi -o crossDemo2

gcc 编译工具 -I 去找头文件 -L 去找库 -lwiringPi 连库 -o 命名


  1. 软连接介绍参考 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值