| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux树莓派开发——交叉编译概述和工具链的使用,文件的软/硬链接,以及带wiringPi库的交叉编译 -> 正文阅读 |
|
[系统运维]Linux树莓派开发——交叉编译概述和工具链的使用,文件的软/硬链接,以及带wiringPi库的交叉编译 |
目录 一、交叉编译1、什么是交叉编译????????交叉编译就是在一个平台上生成另一个平台上的可执行代码,比如在windows(keil)上面编写C51代码,并编译成可执行代码(xx.hex),而代码的运行是在c51单片机上,而不是在windows上面运行,又比如在使用树莓派的时,代码一般是在ubuntu上面编写,而运行是在树莓派上面,不是在ubuntu 上面运行。 编译:在一个平台上生成在该平台上的可执行代码。 2、为什么要交叉编译????????平台上不允许或者不能够安装我们所需要的编译器比如C51,因为目的平台上的资源贫乏,无法运行我们所需要编译器 ?3、树莓派也要交叉编译吗?????????虽然树莓派有操作系统,但是也要交叉编译的,因为有时目的平台还没有建立,操作系统都没有,所以谈不上运行什么编译器,操作系统也是需要编译的。 平台运行至少需要bootloader(启动引导代码)和操作系统核心。 宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,也被称为主机。 二、交叉编译工具链的安装下载地址:tools-master ?下载好这个文件后将文件从共享文件夹拷贝到Ubuntu工作目录来
(当然了也可以用FileZilla 来进行文件的传输) 文件拿到后要进行解压,(如果在Windows那边解压好了的就不需要)
解压完成后进入到文件里面,这里根据自己电脑的位数而进入相应的文件夹
arm-linux-gnueabihf -gcc就是交叉编译的工具链,编译出的可执行文件是在目标机上面运行,而gcc编译出的可执行文件是在本地运行。 如果想在使用工具链的时候不想打这么多文件路径的话,可以进行相关的配置, (1)临时有效 通过配置环境变量来实现
然后使用pwd命令来显示当前的路径 ?配置环境变量
但是这种方法只能是临时有效,当窗口关闭后,打开另外一个窗口时就失效。 (2)永久有效 通过修改工作目录下的.bashrc 隐藏文件,bashrc 是用来配置命令终端的
? 也就是将上面配置环境变量那一句添加到 .bashar文件的最后面,然后保存退出。 source /home/lwl/.bashrc 加载配置文件,马上生效配置。? ?三、工具链的使用file + 文件是用来查看文件的属性的 ?hello.c是一个输出“hello world”的c文件,可以看到用gcc编译的hello.c文件只能在x84-64上面运行,而用arm-linux-gnueabihf-gcc 编译的只能在ARM平台。 hello_2这个可执行文件是不能在本机上面运行的,可以通过scp指令把它拷贝到树莓派上面去运行
指令? 文件名? 开发板用户名? @开发板地址:开发板的路径 然后在树莓派的home/pi路径下面会有一个hello_2的文件,用 ./hello_2 可以正常运行在树莓派上面
四、带WiringPi库的交叉编译????????如果直接安装wiringPi的库是只适用于X86平台,正常情况下,先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。 编译指令:
但是会报如下错误
解决办法:将树莓派的库拿来用
?将树莓派上面的WiringPi 库传到Ubuntu上面去
注意:这里不需要将libwiringPi.so这个软链接拷贝到Ubuntu,因为这里经过scp拷贝时,软链接和库已经没有关系。 生成软链接: 将WiringPi从树莓派拷贝过来了,但是软链接没有拷贝过来,那就需要自己创建一个新的软链接。
这样就创建了一个名为libwiringPi.so的软链接。 ?然后选择一个用wiringPi编写的.c文件进行编译
?编译成功,并生成了一个 名为 PI 的文件,并且文件的运行平台为ARM,通过scp命令将PI拷贝给树莓派,在树莓派上面运行,这样就完成了带有WiringPi库的交叉编译。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/23 6:43:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |