交叉编译的知识和操作
1,为什么要交叉编译,交叉编译是什么
交叉编译 是在一个平台上生成另一个平台上的可执行代码。
我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行
我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu linux上面运行
编译:是在一个平台上生成在该平台上的可执行代码
C51 交叉编译的发生在keil(集成环境上面)
stm32
2,交叉编译需要用到什么
交叉编译器、交叉编译工具链
3,安装交叉编译工具链
a,下载好目标机的的交叉编译工具链
b,新建一个文件夹放下下好的交叉工具安装包,使用命令
unzip tools-master.zip //解压
cd /home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin//进入当前文件夹
找到我们要用的交叉编译链。
c,配置环境变量。
用echo $PATH 查看当前环境变量。
在用命令
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
其中/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:这个不变;后面的那一坨为交叉编译链的所在地方。
这种方法只是临时有效。
d,永久有效的方法:
使用命令cd
回到工作目录在使用命令vi .bashrc
在最下面加入export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
//交叉编译链的路径
在使用命令source .bashrc
加载配置文件生效
e,检查交叉编译是否完成
使用该交叉编译链编译文件。
在使用命令 file 执行文件
查看文件属性。
4,带有wiringPi库的交叉编译
a,正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。
b, 通过-I -L来指定
arm-linux-gnueabihf-gcc demo.c -I /home/lx/Desktop/WiringPi/WiringPi/wiringPi -L. -lwiringPi -o hao
arm-linux-gnueabihf-gcc:交叉编译工具链
demo.c:待编译文件
/home/lx/Desktop/WiringPi/WiringPi/wiringPi:头文件在哪里去找(指定到文件目录)
-lwiringPi:告诉编译器去当前路径去查找去找静态库,默认是去lib中寻找。
-I (大写i):如-I 头文件地址(指定到文件夹),./表示在本目录下,后面的路径存放着头文件的地址,第一个寻找头文件的目录。
-L:如 -L ./库文件地址(指定到该库文件名),后面的路径存放着库文件的地址,第一个寻找库文件的目录。'.'代表当前目录。静态库指定文件名,动态库指定文件夹在加上小l指定动态库,动态库路径加入到LD_LIBRARY_PATH环境变量。头文件环境变量C_INCLUDE_PATH,找C 头文件环境变量CPLUS_INCLUDE_PATH,找静态库环境变量LIBRARY_PATH,python的包环境变量 PYTHONPATH
-l (小写L):-l后面跟着的是动态库的名字,会寻找.so动态库文件。
5,生成软连接和硬链接
会用到命令ln
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaakka
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13