300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 交叉编译(交叉工具链)

交叉编译(交叉工具链)

时间:2019-08-17 08:27:36

相关推荐

交叉编译(交叉工具链)

一、交叉编译(交叉工具链)

在一个环境下编译生成一个可以在另一个环境中执行的可执行文件的工具

本地编译命令 gcc 实现把高级语言的C文件,翻译成二进制文件

是可以在虚拟机中找到的:

which gcc

用来查找命令位置的命令

若目标命令存在,则反馈目标命令的绝对路径

若目标命令不存在,则什么反馈都没有

交叉编译命令 实现把高级语言的C文件,翻译成二进制文件

首先需要安装交叉工具链,才能找到

因为最开始的镜像默认是没有交叉工具链

区别:执行的环境不一样

gcc属于本地编译命令,编译生成的文件是在虚拟机中执行的

交叉编译针对的是我们的开发板,因为我们的开发板是ARM

结论:在同一个平台上编译生成的可执行文件,可以在该平台上运行,

那么这个编译过程就称之为本地编译

在一个平台上编译生成的可执行文件,可以在另一个平台上运行,

那么这个编译过程就称之为交叉编译

安装交叉工具链:

1.先把工具链放到共享目录里arm-5.4.0.tar.gz2.为你的工具链在虚拟机中新建一个目录,并给与权限sudo mkdir /usr/5.4.0_armsudo chmod 777 /usr/5.4.0_arm*也可先进入/usr/目录,再进行操作3.把工具链复制到刚创建的目录中,进行解压也可以直接解压工具链到刚创建的目录1>直接在共享目录中解压到目标目录,需要先切换到共享目录sudo tar zxvf arm-5.4.0.tar.gz -C /usr/5.4.0_arm2>先复制到创建的目录中,然后切换到新建目录中,直接解压sudo cp /mnt/hgfs/xxx/arm-5.4.0.tar.gz /usr/5.4.0_arm共享目录cd /usr/5.4.0_armsudo tar zxvf arm-5.4.0.tar.gz4.交叉工具链安装完毕之后,想要生效,需要设置交叉工具链相对应的命令和库能被找到既是需要把对应命令和库的存放位置,添加到环境变量中1>添加命令对应存储文件的位置export PATH=$PATH:/usr/5.4.0_arm/5.4.0/usr/bin2>添加库文件对应存储文件的位置export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/5.4.0_arm/5.4.0/usr/lib添加完命令和库路径之后,即可使用交叉编译工具,但是仅限于当前shell终端,其他中断仍无法使用5.使交叉工具在所有shell终端生效原理:在每一个终端启动时,都去执行对应的命令和库文件的环境变量的添加声明找到shell启动时的配置的脚本文件~/.bashrc打开对应的脚本文件,把声明交叉编译命令和对应库的两句语句,添加到文件末尾操作步骤:gedit ~/.bashrc把下列两句话添加入文件末尾,然后保存,退出即可export PATH=$PATH:/usr/5.4.0_arm/5.4.0/usr/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/5.4.0_arm/5.4.0/usr/lib重新运行终端的脚本文件source .bashrc验证which arm-linux-gcc若能查到对应则说明成功6.本地编译和交叉编译的区别利用命令file查看文件属性1.file test-->test由本地编译生成test: ELF 64-bit LSB shared object, x86-6464位的可执行文件类型是x86-642.file arm_test-->arm_test由交叉编译生成arm_test: ELF 32-bit LSB executable, ARM32位的可执行文件类型是ARM

开发板的使用:

1.安装ScurtCRT软件

解压SecureCRT.rar压缩包

进入解压目录找到对应的SecureCRT.exe文件,直接双击运行

若是第一次使用该软件,则安装时需要输入对应的许可信息

许可信息在“说明.txt”文档中

2.设置串口软件的参数

点击快速连接按钮

通信协议 serial

通信端口 COMx --》首先需要安装对应的转串口驱动,若无法区分,两个驱动都安装即可

查看对应的端口号:

右键此电脑(计算机)–》管理–》设备管理器–》查看端口–》查看对应转串口驱动的端口

波特率 115200

数据位 8

奇偶校验位 无(none)

停止位 1

数据流控制 全部关闭(不选择)

关闭开发板开机自启的物联网实验程序:打开开发板的/etc/profile文件vi /etc/profile按i,从命令模式切换到输入模式找到cd /IOT./iot在这两句命令之前加上注释符号#然后,按Esc切换到命令模式输入":wq",保存并退出文件**注意:一定不要弄成无线重启重新启动系统命令行输入命令:reboot3.下载文件到开发板上1>利用串口命令rx进行下载输入命令:rx xxx(目标文件)目标文件只能是普通文件,包括二进制文件、源文件、文本文件、、、回车会进入等待传输点击串口软件的传输按钮-->-->选择发送XModem进入文件浏览选择过程确认目标文件,下载即可正在开始 xmodem 传输。 按 Ctrl+C 取消。正在传输 test...100%16 KB 3 KB/s 00:00:05 0 错误因为第一次下载的文件是没有权限的,所以需要赋予目标文件权限,方可执行chmod 777 xxx(目标文件)2>利用串口命令rz进行下载因为开发板上默认是没有rz命令的,所以需要先把命令下载到开发板先利用rx把rz下载到开发板的/bin/cd /bin/进入开发板的/bin/目录rx rz下载rz下载命令rx sz下载sz上传命令下载完毕之后需要记得赋予执行权限使用方式:输入命令:rz -y,回车浏览选择需要下载的文件因为rz每一次都是删除对应文件之后,重新下载相当于每一次都是第一次下载所以每一次都需要重新赋予执行权限sz使用方式和rx一样,一次性只能上传一个指定文件,和rz不一样sz上传的文件所在的位置:SecurtCRT软件的菜单‘选项’-->‘会话选项’-->XModem/ZModem指定上传/下载目录的位置3>tftp服务器下载,利用的网络传输利用windows下的TFTP软件提供的服务若要使用tftp服务,首先需要保证网络畅通,局域网通信ok1.设置开发板的ip,使开发板和PC在同一局域网,并可通信ifconfig eth0 192.168.xxx.xxx注意先查看电脑IP2.启动tftp服务器直接双击运行tftp服务器软件即可3.选择tftp服务器的目标目录既是将要下载的文件所在的目录4.命令下载tftp -g -r xxx(目标文件) 192.168.xxx.xxx(PC端的IP)上传tftp -p -l xxx(目标文件) 192.168.xxx.xxx(PC端的IP)注意会出现的问题:1.网线连接成功,网口会闪烁,会打印出提示语句[ 4320.172000] PHY: stmmac-0:04 - Link is Up - 1000/Full2.IP的设置,PC和开发板一定要在同一网段既是IP的前3个数字一样验证网络是否通畅开发板和PC相互ping:ping 192.168.xxx.xxx-->开发板pingPC,PCping开发板若网络通畅,会反馈信息64 bytes from 192.168.51.2: seq=0 ttl=128 time=1.701 ms64 bytes from 192.168.51.2: seq=1 ttl=128 time=1.426 ms64 bytes from 192.168.51.2: seq=2 ttl=128 time=1.500 ms3.因为tftp利用的网络,所以防火墙很可能会有问题需要把防火墙全部关掉因为ifconfig eth0 192.168.xxx.xxx设置的ip是临时的,时效是直到关机若想设置永久,需要把该命令写入开发板的启动配置文件的末尾既是开发板上的/etc/profile文件

开发板上的程序运行:

1.编辑源程序

2.编译命令选择的依赖,看接下来编译生成的可执行将要在哪里运行

虚拟机 本地编译命令

开发板 交叉编译命令

*3.若目标是开发板,则需要把目标下载到开发板上去执行

4.运行目标可执行程序

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。