2017织梦网站怎么做seo,商贸公司寮步网站建设极致发烧,十大电子游戏平台网站,电子商务网站建设与管理的学后感交叉编译的概念
1. 什么是交叉编译#xff1f;
交叉编译是指在一个平台上生成可以在另一个平台上运行的可执行代码。例如#xff0c;在Ubuntu Linux上编写代码#xff0c;并编译生成可在Orange Pi Zero2上运行的可执行文件。这个过程是通过使用一个专门的交叉编译工具链来…交叉编译的概念
1. 什么是交叉编译
交叉编译是指在一个平台上生成可以在另一个平台上运行的可执行代码。例如在Ubuntu Linux上编写代码并编译生成可在Orange Pi Zero2上运行的可执行文件。这个过程是通过使用一个专门的交叉编译工具链来实现的。
编译与交叉编译的区别
编译在一个平台上生成该平台的可执行代码。交叉编译在一个平台上生成另一个平台的可执行代码。
2. 为什么要进行交叉编译
目标平台的限制目标平台可能没有足够的资源或不允许安装编译工具。例如许多嵌入式系统和小型设备不具备直接编译代码的能力。目标平台尚未建立在一些情况下目标平台的操作系统或基础环境尚未完全建立需要交叉编译来生成基础的启动代码和操作系统核心。
3. 宿主机host和目标机target
宿主机用于编辑和编译程序的平台通常是基于X86架构的PC机。目标机用户开发的平台通常是非X86平台。宿主机上编译的可执行代码将在目标机上运行。
4. 交叉编译工具
工具链和环境设置
使用环境
电脑Ubuntu 18.04开发板Orange Pi Zero2交叉编译器aarch64-none-linux-gnu-
下载和安装 下载交叉编译工具链 下载地址清华大学开源软件镜像站 下载文件 gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz 上传并解压到虚拟机 cp /home/ygl/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz /home/orangpiZero2 tar -xf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz cd gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
设置环境变量 临时设置环境变量 export PATH$PATH:/home/ygl/orangePiZero2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin 永久设置环境变量 编辑.bashrc文件 vi /home/ygl/.bashrc 在最后一行加入 export PATH$PATH:/home/ygl/orangePiZero2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin 使其生效 source /home/ygl/.bashrc 测试交叉编译
编写简单的hello.c文件并使用交叉编译器编译 aarch64-none-linux-gnu-gcc hello.c -o test 将生成的test可执行文件上传到Orange Pi Zero2上测试运行。
带WiringPi库的交叉编译
1. 交叉编译WiringPi库
交叉编译库文件首先需要交叉编译WiringPi库以确保生成的库文件适合目标开发板使用。指定头文件和库路径 aarch64-none-linux-gnu-gcc your_code.c -I ./wiringOP-master/wiringPi -L. -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -g -o your_executable
2. 文件拷贝和软链接
拷贝库文件 从开发板的/usr/local/lib目录下拷贝libwiringPi.so.2.46和libwiringPiDev.so.2.46到上位机的/home/ygl/orangePiZero2目录下。创建软链接 ln -s libwiringPi.so.2.46 libwiringPi.so ln -s libwiringPiDev.so.2.46 libwiringPiDev.so
3. 编写交叉编译脚本
编写build.sh脚本用于交叉编译带WiringPi库的文件
aarch64-none-linux-gnu-gcc $1 -I ./wiringOP-master/wiringPi -L. -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -g -o $2