• Linux-交叉编译(常用工具的配置)


    交叉编译

    编辑代码 -> 编译代码 -> 运行及调试代码

    交叉编译也是一种编译,也是把一种语言(源代码)翻译成另外一种语言(目标代码)。

    在PC上面,编译环境(就是你写代码和编译代码的那个机器环境) 和 运行环境(运行你代码的那个机器环境) 是相同的。

    但是很多嵌入式的产品,不适合去写程序,也没有开发工具,。。。。
    所以上面程序编译运行的那几个步骤分开:

    编译环境 
    就是程序,编译程序的那个环境
    
    PC
    运行环境 
    
    最终运行程序的那个环境 
    目标板
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    交叉编译: 在一种环境下去编译,另外的一个环境下执行程序。
    如:
    在PC机去编译一个ARM环境的程序。

    主机(编译环境) -----(工具链)-----> 目标板(运行环境)

    交叉编译器:

    			arm-linux-gcc 
    			
    		编译命令: 
    			arm-linux-gcc  xxx.c -o xxx 
    
    • 1
    • 2
    • 3
    • 4

    交叉编译器的安装:
    (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/ 
    
    • 1
    • 2
    • 3
    • 4

    (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
    
    • 1

    (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 
    
    • 1
    • 2

    (5) 把交叉编译的命令的完整路径加入到环境变量 PATH
    如:

    export PATH=$PATH:/usr/local/arm/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabi/bin/  
    
    • 1

    把上面的那条语句,加入到 ~/.bashrc 的最后一行

    		sudo vim ~/.bashrc 
    
    • 1

    当前用户每次登陆,都会运行~/.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 => 找到要下载的文件 
    					
    					给可执行文件加权限 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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 
    
    • 1
    • 2

    (2) 格式化 //可以跳过格式化,以免U盘清空
    把“文件系统的元数据”写入到分区的前面
    如:

    注:U盘名 可能会发生变化,插入后注意查看

    mkfs.vfat -> 格式化为fat文件系统 
    make file system
    mkfs.vfat /dev/sdb1 	
    
    • 1
    • 2
    • 3

    (3) 挂载
    把U盘的分区的文件系统 挂载到 操作系统的某个文件路径下面去。
    在这里插入图片描述
    U盘名 会可能发生变化,注意更改
    如 现在U盘名为sda

    mount -t vfat /dev/sdb1 /mnt/ 
    						
    -t 指定分区的文件系统类型
    /dev/sdb1 分区的节点名(要挂载的设备名)
    /mnt/ 挂载到操作系统的哪个目录下面去
    						
    一旦挂载成功,你U盘里面的文件就在/mnt目录下面啦
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (4) 卸载

    umount /dev/sdb1
    or 
    umount /mnt 
    
    • 1
    • 2
    • 3

    网络配置

    配置虚拟机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 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这样配置每次开关机会刷新,需要重新配置
    所以我们需要写一个脚本
    每次开机的时候都会执行一个脚本(启动脚本)

    					/etc/init.d/rcS 
    					这个脚本,它会把/ect/init.d/这个目录下面的所有 
    					Sxxx.sh 的文件执行一遍。
    					咱们可以写一个Sxxx.sh脚本,放在/ect/init.d/这个目录下面去。
    
    • 1
    • 2
    • 3
    • 4
    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 & 
    						
    						保存退出,重启开发板生效。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    配置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服务器 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述
    先在虚拟机中把需要的文件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 本地文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    解决Maven依赖下载缓慢的问题(亲测管用)
    [附源码]计算机毕业设计springboot农村人居环境治理监管系统
    LCD屏硬件调光的几种方式
    MySql基础:utf8_unicode_ci、utf8_general_ci
    HTML5 常见的语义标记(布局)
    浅谈游戏机制
    【光学】Matlab模拟多光束干涉光场分布
    SpringBoot整合阿里云OSS对象存储
    新大陆!阿里 P9 整理出:Java 架构师“成长笔记”共计 23 版块
    大数据软件项目的验收流程
  • 原文地址:https://blog.csdn.net/weixin_46836491/article/details/126342930