交叉编译
来自百度对交叉编译的解释:
https://baike.baidu.com/item/交叉编译/10916911?fr=aladdin
1、交叉编译是什么?
交叉编译:是在一个平台上生成另一个平台上的可执行代码编译
例:
C51的交叉编译发生在keil(集成环境上面)
linux上面编写树莓派的代码,并编译成可执行的代码,如xxx.out,在树莓派上运行
为什么需要交叉编译?
目的平台上不允许或不能够安装我们所需要的编译器:
1、目的平台上的资源贫乏,无法运行我们所需要编译器
2、目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器平台
运行至少需要两样东西:bootloader(启动引导代码)以及操作系统核心
宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。
交叉编译需要用到工具:交叉编译器、交叉编译工具链
2、交叉编译工具链的安装(tools-master)
cp /mnt/hgfs/share/tool-master.zip .
cd /home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
pwd:获得路径
echo $PATH
链接:https://pan.baidu.com/s/14GJq6Mb3S__So0NCq1-NaA
提取码:4not
1.共享文件夹复制文件
2.解压安装包,unzip 目标名xxx选择适合自己的版本安装:unzip tool-master.zip
tools-master→arm-bcm2708→gcc-linaro-arm-linux-gnueabihf-raspbian(以X86的linux和ARM的树莓派为例)
3.配置环境变量,否则交叉编译只能在其文件夹下可用
echo $PATH查看当前环境变量的值
pwd:显示当前目录路径
https://github.com/raspberrypi/
方法一:
临时有效
修改PATH环境变量,开启另一个终端将无法使用
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
方法二:
永久有效
1.修改工作目录下的.bashrc隐藏文件,配置命令终端vi /home/admin_/.bash
2.在该脚本下,加入上述环境变量并保存
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
3.然后,source /home/admin_/.bash加载配置文件,马上生效指令
3、补充
1、检查安装包
arm-linux-gnueabihf-gcc -v
使用该命令即可看到安装的版本号等信息,否则未安装成功
**软链接:**软链接不占空间

2.查看文件信息
file 文件名,可以看到下图中上面的文件适用X86架构的机器,下面的文件适合ARM架构的机器

3.传输文件
将linux的文件传输到树莓派机器:
scp test pi@192.168.1.104:/home/test
#指令 文件名 开发板用户名@开发板地址:开发板绝对路径
例:
一、交叉编译在树莓派上执行hello world

1、编辑好hello world代码
2、使用gcc编译
3、查看test_1文件类型为X86-64位型号的系统
4、使用arm-linux-gnueabihf-gcc test.c -o test_2编译ARM架构的
5、查看test_2类型

6、执行文件

7、将交叉编译好的test_2拷贝到树莓派上
scp test_2 pi@192.168.31.6:/home/pi/jiaocha

查看树莓派端,并成功执行hello world

二、曾经FTP项目

将服务器端编译成X86版本
将客户端编译成ARM版本,并下载到树莓派上

服务器端等待连接
客户端连接服务器

4128



被折叠的 条评论
为什么被折叠?



