网站怎么做的防采集,wordpress指定域名,体验式营销,深圳装修公司排名前十概念
交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。#xff08;编译是指#xff0c;在一个平台上生成在该平台上的可执行程序#xff09;通常情况下#xff0c;编译器和目标平台的架构是不同的#xff0c;例如#xff0c;在一台x86平台上编译运行在ARM平…概念
交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。编译是指在一个平台上生成在该平台上的可执行程序通常情况下编译器和目标平台的架构是不同的例如在一台x86平台上编译运行在ARM平台上的程序。单片机常用KEIL上面编译代码就是交叉编译比如我们在Linux环境上编写树莓派的使用代码生成可执行代码下载到树莓派中运行的这一个过程。
交叉编译需要使用交叉编译工具链包括交叉编译器、库文件、头文件等。交叉编译器可以将源代码编译成目标平台的可执行文件而库文件和头文件则提供了目标平台的系统调用和函数定义等信息。
交叉编译通常用于嵌入式系统开发、操作系统开发、科学计算等领域。通过交叉编译可以在一台通用的计算机上快速编译出多个平台的程序提高开发效率和代码可移植性。
为什么要使用 硬件平台限制如果您的程序需要在特定的硬件平台上运行但您的开发计算机不具备该硬件平台那么您可以使用交叉编译来生成该平台上的可执行文件。 软件依赖性如果您的程序依赖于特定的库或工具链而这些库或工具链只适用于另一种操作系统或计算机架构那么您可以使用交叉编译来生成该平台上的可执行文件。 提高编译效率交叉编译可以在一台计算机上并行编译多个目标平台的程序从而提高编译效率和节省时间。 安全性交叉编译可以将程序的源代码和编译器隔离开来从而减少了潜在的安全风险。
总结平台上不允许或不能够安装我们所需要的编译器比如C51
1.因为目的平台上的资源贫乏无法运行我们所需要编译器
2.树莓派是不是就不需要交叉编译 错。也要树莓派有时又是因为目的平台还没有建立连操作系统都没有根本谈不上运行什么编译器。操作系统也是代码也要编译 平台运行需要两样至少东西bootloader后动引导代码以及操作系统核心 宿主机host编辑和编译程序的平台一般是基于X86的PC机通常也被称为主机。 目标机target用户开发的系统通常都是非X86平台。host编译得到的可执行代码在target上运行。
工具链的安装 下载工具 下载链接https://github.com/raspberrypi/ 把文件弄到Ubuntu里面
下载好之后在Ubuntu系统里面开启共享文件 这里我已经添加道友们可以点击添加按钮找到下载的工具包路径或者自己创建一个文件夹把刚刚下载的包放到里面然后选择路径点击确定就可以。
开始安装
默认共享文件路径在 , xxx表示你创建的共享文件夹名字
/mnt/hgfs/xxx/
通过cd /mnt/hgfs/xxx/ 到该目录下ls 指令可以看到tools-master.zip
使用unzip tools-master.zip解压如果解压不成功可以加权限 sudo unzip tools-master.zip
然后cd tools-master/ 再用 ls 查看到arm-bcmxxx文件,我当时下载的是arm-bcm2708
然后cd arm-bcm2708/ 再用 ls 看到gcc-linaro-arm-linux-gnueabihf-raspbian-x64如果你的环境是32位的使用不带x64的就可以。 继续使用图中指令 可以看到能够使用的一下东西。 环境路径变更
从上面知道想要使用这个工具要到的路径太深不可能每次使用都到这个路径。我们需要改变使用路径在什么路径底下都可以使用。
临时变更
使用echo $PATH 显示当前工具的环境变量路径 再使用指令 pwd 看变量位置 使用指令 export PATH 将图中花圈路径的拼接 回到主目录查看是否成功图中这样能够找到打开对应文件就是成功 永久变更
临时的肯定不好每次开机都要重新配置
修改隐藏的配置文件 .bashrc
使用图中指令找到最开始的目录 然后 拉到最后面添加刚才的内容保存退出 更新一下 就可以了 分享一个技巧输入指令history 可以查看到你使用过的所有指令。 使用 创建一个文件test1.c
如果只是gcc 编译只能在x86-64环境下执行编译和的程序
使用arm-linux-gnueabihf-gcc test1.c -o test_1 能够看到可以在ARM-Linux平台使用 通过scp test_1 pi192.18.1.41:Desktop 把可执行程序移动到树莓派。
注意pi是我的树莓派用户名192.168.1.41是我的树莓派地址
然后选择yes进入输入你的树莓派密码。 到树莓派查看是否成功图中能够找到test_1证明成功了 ./test-1 就可以执行 然后你会发现运行失败
原因是没有链接到编写代码环境的地址 上图是编译环境的地址192.168.91.128 在编译环境这边 ./test1 192.168.91.128 8880
注意test1是在编译环境下gcc编译的 地址是编译环境地址 8880是端口号自己设置 树莓派端 ./test_1 192.168.91.128 8880 避免篇幅太长wiringPi库的交叉编译放在下一篇文章。