Linux-交叉编译(常用工具的配置)
Linux-交叉编译(常用工具的配置)
交叉编译
编辑代码 -> 编译代码 -> 运行及调试代码
交叉编译也是一种编译,也是把一种语言(源代码)翻译成另外一种语言(目标代码)。
在PC上面,编译环境(就是你写代码和编译代码的那个机器环境) 和 运行环境(运行你代码的那个机器环境) 是相同的。
但是很多嵌入式的产品,不适合去写程序,也没有开发工具,。。。。
所以上面程序编译运行的那几个步骤分开:
编译环境
就是程序,编译程序的那个环境
PC
运行环境
最终运行程序的那个环境
目标板
交叉编译: 在一种环境下去编译,另外的一个环境下执行程序。
如:
在PC机去编译一个ARM环境的程序。
主机(编译环境) -----(工具链)-----> 目标板(运行环境)
交叉编译器:
arm-linux-gcc
编译命令:
arm-linux-gcc xxx.c -o xxx
交叉编译器的安装:
(1) 把交叉编译工具链的压缩包,拷贝到你的linux系统
(2) 把工具链解压到一个合适的目录(不能够是共享目录)
如:
sudo rm -r /usr/local/
sudo mkdir -p /usr/local/arm/
cd 你的资料目录
sudo tar -xvf gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabi.tar.xz -C /usr/local/arm/
(3) 试一下交叉编译器能否正常使用
/usr/local/arm/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc test.c -o test
(4) 创建一个软连接(快捷方式)
cd /usr/local/arm/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabi/bin/
sudo ln -s arm-linux-gnueabi-gcc arm-linux-gcc
(5) 把交叉编译的命令的完整路径加入到环境变量 PATH
如:
export PATH=$PATH:/usr/local/arm/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabi/bin/
把上面的那条语句,加入到 ~/.bashrc 的最后一行
sudo vim ~/.bashrc
当前用户每次登陆,都会运行~/.bashrc 就会自动执行上面的那一条语句
添加完成之后,需要reboot
也可以将上面那条语句,添加/etc/ex,重启后生效。
这样我们就可以直接使用并且简化命令了
工具链及常用软件
(1) 按装USB转串口驱动
(2) 打开设备管理查看驱动是否安装成功
(3) 安装sourceCRT
1.获取压缩包并解压
2.找到一个 带一把锁的图标 名字 sourceCRT.exe的可执行文件
3.给它创建一个快捷方式,将快捷方式存放至桌面
4.点击快捷方式,进入到软件窗口
使用:
1.连接
首先 拿出开发板 将USB转串口线 与 串口线连接
串口线另一端连接开发板
开发板电源但不上电
2.在弹出的串口中做如下操作
选择快速链接
协议: serial
端口: 查看设备管理的端口号是多少
这里就选择哪个
比特率: 115200
数据位: 8
奇偶校验位: NONE
停止位: 1
去掉所有流控
然后点击连接
3.打开开发板
4.等待开机完成 如果敲回车键没有命令行出现 则Ctrl + C
就会将入到命令行
这样我们就连接上开发板了
通过串口下载文件到开发板上面去
串口下载(xModern/yModern/zModern)协议
rx 用xModern串口协议接收文件
用法:
rx 要接收的文件名
=> 回车 => 点击传输 => 选择发送 xModern => 找到要下载的文件
给可执行文件加权限
rz 用zModern串口协议接收文件
关于A53开发板不能使用rz的解决方案:
1、把arm-rz.tar.xz下载到开发板的根目录下
rx arm-rz.tar.xz
2、解压:
tar xvf arm-rz.tar.xz
3、进入解压生成的arm-rz目录
cd /arm-rz
4、执行脚本
./rzconf.sh
5、重启开发板
使用rz
U盘(硬盘)
(1) 建立分区表
linux的分区命令
fdisk -l
(2) 格式化 //可以跳过格式化,以免U盘清空
把“文件系统的元数据”写入到分区的前面
如:
注:U盘名 可能会发生变化,插入后注意查看
mkfs.vfat -> 格式化为fat文件系统
make file system
mkfs.vfat /dev/sdb1
(3) 挂载
把U盘的分区的文件系统 挂载到 操作系统的某个文件路径下面去。
U盘名 会可能发生变化,注意更改
如 现在U盘名为sda
mount -t vfat /dev/sdb1 /mnt/
-t 指定分区的文件系统类型
/dev/sdb1 分区的节点名(要挂载的设备名)
/mnt/ 挂载到操作系统的哪个目录下面去
一旦挂载成功,你U盘里面的文件就在/mnt目录下面啦
(4) 卸载
umount /dev/sdb1
or
umount /mnt
网络配置
配置虚拟机ubuntu 的ip地址
Player -> 管理 -> 虚拟机设置 -> 网络适配器 -> 桥接模式(把虚拟机当作是一台独立的电脑)
然后再到ubuntu 里面的系统 设置 -> 网络 -> 手动 -> 配置IP地址
查看ubuntu的IP信息的命令:
ifconfig
PC端网络配置(略)
开发板的网络配置
开发板上没有图形化网络配置窗口,只有通过命令。
网络配置的命令:
ifconfig <---- 列出系统中所有的网卡信息
配置IP :
ifconfig eth0 192.168.31.3 netmask 255.255.255.0 up
配置网卡的MAC地址(物理地址):
ifconfig eth0 hw ether 0E:72:29:E8:03:07
这样配置每次开关机会刷新,需要重新配置
所以我们需要写一个脚本
每次开机的时候都会执行一个脚本(启动脚本)
/etc/init.d/rcS
这个脚本,它会把/ect/init.d/这个目录下面的所有
Sxxx.sh 的文件执行一遍。
咱们可以写一个Sxxx.sh脚本,放在/ect/init.d/这个目录下面去。
Start.sh
#!/bin/sh
ifconfig eth0 down #禁用网卡
#配置网卡的MAC地址
ifconfig eth0 hw ether 0E:72:29:E8:03:xx # mac地址设置 xx是你IP的16进制
#170 AA
ifconfig eth0 192.168.31.xxx netmask 255.255.255.0 up
telnetd &
保存退出,重启开发板生效。
ubuntu tftpd服务器的配置
tftp用UDP协议,做一个传输文件的网络应用协议
安装tftpd:
sudo apt-get install tftpd-hpa
启动:
sudo service tftpd-hpa start
重启:
sudo service tftpd-hpa restart
停止:
sudo service tftpd-hpa stop
配置tftp文件夹方式:
S1: 在家目录创建一个 tftp文件夹
cd /home/china
mkdir tftp
S2: 更改文件夹的权限为 777
chmod 777 tftp
S3: 修改配置文件
sudo vim /etc/default/tftpd-hpa
TFTP_USERNAME='tftp'
TFTP_DIRECTORY='/home/china/tftp'
TFTP_ADDRESS='0.0.0.0:69'
TFTP_OPTIONS='-l -c -s'
S4: 保存并且退出
解释:
-l 运行在独立的服务器模式
-c 允许创建新的文件 tftp目录下允许添加新的文件以供于传输
-s 决定tftp目录
S5: 重启tftp服务器
先在虚拟机中把需要的文件cp到tfp文件夹中
tftp命令下载或上传文件(在开发板输入命令):
如:
tftp -g -r XXX 192.168.31.xxx
-g get 获取文件,下载文件
-r remote 远程文件名,要下载的文件名
通过tftp的网络服务器从192.168.31.xxx获取一个远程文件,
文件名叫做 XXX
tftp -p -l XXX 192.168.31.xxx
-p put 上传
-l local 本地文件
更多推荐
所有评论(0)