建设企业网站得花多少,2021年企业所得税怎么征收,网站首页只显示域名,php7 nginx wordpress一、什么是交叉编译、为什么要交叉编译
1、什么是交叉编译#xff1f;
交叉编译#xff1a;是在一个平台上生成另一个平台上的可执行代码。比如我们在 x86 平台上#xff0c;编写程序并编译成能运行在 ARM 平台的程序#xff0c;编译得到的程序在 x86 平台上是不能运行的…一、什么是交叉编译、为什么要交叉编译
1、什么是交叉编译
交叉编译是在一个平台上生成另一个平台上的可执行代码。比如我们在 x86 平台上编写程序并编译成能运行在 ARM 平台的程序编译得到的程序在 x86 平台上是不能运行的必须放到 ARM 平台上才能运行。
我们在Windows上面编写C51代码并编译成可执行代码如xx.hex是在c51上面运行不是在windows上面运行
编译是在一个平台上生成在该平台上的可执行代码
2、为什么要交叉编译
2.1、交叉编译的目标系统一般都是内存较小、显示设备简陋甚至没有没有能力在其上进行本地编译无法运行我们所需要编译器比如C51C51 交叉编译的发生在keil(集成环境上面)
2.2、有能力进行源代码编译的平台CPU架构或操作系统与目标平台不同
平台运行需要两样至少东西bootloader启动引导代码以及操作系统核心
交叉编译器用到的工具交叉编译器 要进行交叉编译我们需要在主机平台上安装对应的交叉编译工具链cross compilation tool chain然后用这个交叉编译工具链编译我们的源代码最终生成可在目标平台上运行的代码。 如在Linux PC上利用arm-linux-gcc编译器可编译出针对Linux ARM平台的可执行代码。 二、交叉编译工具链的安装 树莓派交叉编译工具链安装
下载地址
https://github.com/raspberrypi/
OrangePi_Zero2交叉编译工具链安装
参考OrangePi_Zero2用户手册Orange Pi Zero2-Orange Pi官网-香橙派Orange Pi开发板,开源硬件,开源软件,开源芯片,电脑键盘 从共享文件夹拷贝到工作目录 cp /mnt/hgfs/sharefromwindows/tools-master.zip . 解压 unzip tools-master.zip 进入文件夹bin目录 cd /home/zyf/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 获取路径 pwd 配置环境变量
1、环境变量临时有效 export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zyf/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 2、环境变量永久有效
修改工作目录下的.bashrc 隐藏文件配置命令终端的 vi /home/zyf/.bashrc 在文件最后一行加入 export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zyf/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 加载配置文件马上生效配置 source /home/zyf/.bashrc 三、交叉编译
检查下交叉编译工具对不对 arm-linux-gnueabihf-gcc -v 4.8.3 编译 arm-linux-gnueabihf-gcc xxx.c -o xxx eg: 服务端gcc ftpserver.c -I ./ -o serverInX86 客户端arm-linux-gnueabihf-gcc ftpclient1.c -I ./ -o clientInpi 把编译生成的可执行文件下载到开发板 scp clientInPi pi192.168.101.33:/home/pi 指令 文件名 开发板用户名开发板地址开发板的绝对路径 注意服务端和客户端需要在同一网段 若出现public key问题用以下 scp -o StrictHostKeyCheckingno ftpclientARM pi192.168.101.33:/home/pi 四、带wiringPi库的交叉编译如何进行
1、正常我们先要交叉编译wiringpi库编译出的库适合树莓派这时候交叉编译可执行程序的试试链接库的格式也是正确的。
2、通过-I –L来指定
因为链接的库的格式不对是宿主机的平台会出现错误
解决把树莓派上的wiringpi库拿上来用
3、软链接的引入 软链接 1、软连接文件有类似于Windows的快捷方式 2、在符号链接中文件实际上是一个文本文件其中包含的有另一文件的位置信息。 3、只在你选定的位置上生成一个文件的镜像不占用磁盘空间 4、如何生成软链接 ln -s libwiringPi.so.2.52 libwiringPi.so 指令 参数 要被链接的文件 软链接名 5、硬链接 硬链接 ln libwiringPi.so.2.52 libwiringPi.so 它会在你选定的位置上生成一个和源文件大小相同的文件 6、编译生成
解压wiringpi库的tar.gz文件 命令tar -zxvf xxx.tar.gz -C /xxx/ 查看命令man tar 编译生成 arm-linux-gnueabihf-gcc relay1.c -I /home/zyf/share/WiringPi/wiringPi -L. –lwiringPi 这里编译不成功提示需要用到glibc库
解决方案1、把树莓派和ubantu对应的glibc升级到一致2、直接在树莓派编译简单高效