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 本地文件
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
9 2.1.2 ARM处理器体系结构........................................................................................ 10 2.1.3 LinuxARM处理器........................................................................................ 12 2.2 ARM指令集................................................................................................................... 13 2.2.1 ARM微处理器的指令集概述............................................................................ 13 2.2.2 ARM指令寻址方式............................................................................................ 15 2.2.3 Thumb 指令概述................................................................................................. 17 2.3 典型ARM处理器简介.................................................................................................. 17 2.3.1 Atmel AT91RM9200............................................................................................ 17 2.3.2 Samsung S3C2410 ............................................................................................... 18 2.3.3 TI OMAP1510/1610 系列................................................................................... 19 2.3.4 Freescale i.Max21 ................................................................................................ 22 2.3.5 Intel Xscale PXA系列......................................................................................... 23 2.4 三星S3C2410开发板.................................................................................................... 24 2.4.1 三星S3C2410开发板介绍................................................................................. 24 2.4.2 众多的开发板供应商.......................................................................................... 26 第3 章 Linux 编程环境................................................................................................................ 28 ║2 嵌入式系统开发技术详解——基于ARM 3.1 Linux 常用工具.............................................................................................................. 28 3.1.1 Shell简介............................................................................................................ 28 3.1.2 常用Shell命令.................................................................................................... 30 3.1.3 编写Shell脚本.................................................................................................... 38 3.1.4 正则表达式.......................................................................................................... 42 3.1.5 程序编辑器.......................................................................................................... 44 3.2 Makefile .......................................................................................................................... 48 3.2.1 GNU make ........................................................................................................... 48 3.2.2 Makefile规则语法.............................................................................................. 49 3.2.3 Makefile文件中变量的使用.............................................................................. 51 3.3 二进制代码工具的使用................................................................................................. 52 3.3.1 GNU Binutils工具介绍....................................................................................... 52 3.3.2 Binutils工具软件使用........................................................................................ 54 3.4 编译器GCC的使用....................................................................................................... 54 3.4.1 GCC编译器介绍................................................................................................. 54 3.4.2 GCC编译选项解析............................................................................................. 56 3.5 调试器GDB的使用技巧.............................................................................................. 60 3.5.1 GDB调试器介绍................................................................................................ 60 3.5.2 GDB调试命令.................................................................................................... 61 3.6 Linux 编程库.................................................................................................................. 66 3.6.1 Linux 编程库介绍............................................................................................... 66 3.6.2 Linux 系统调用................................................................................................... 67 3.6.3 Linux 线程库....................................................................................................... 70 第4 章 交叉开发环境.................................................................................................................. 73 4.1 交叉开发环境介绍......................................................................................................... 73 4.1.1 交叉开发概念模型.............................................................................................. 73 4.1.2 目标板与主机之间的连接.................................................................................. 75 4.1.3 文件传输.............................................................................................................. 76 4.1.4 网络文件系统...................................................................................................... 77 4.2 安装交叉编译工具......................................................................................................... 78 4.2.1 获取交叉开发工具链.......................................................................................... 78 4.2.2 主机安装工具链.................................................................................................. 79 4.3 主机开发环境配置......................................................................................................... 80 4.3.1 主机环境配置...................................................................................................... 80 4.3.2 串口控制台工具.................................................................................................. 81 4.3.3 DHCP服务.......................................................................................................... 84 4.3.4 TFTP服务........................................................................................................... 85 4.3.5 NFS服务............................................................................................................. 86 第1 章 目录 3║ 4.4 启动目标板..................................................................................................................... 88 4.4.1 系统引导过程...................................................................................................... 88 4.4.2 内核解压启动...................................................................................................... 89 4.4.3 挂接根文件系统.................................................................................................. 90 4.5 应用程序的远程交叉调试............................................................................................. 91 4.5.1 交叉调试的模型.................................................................................................. 91 4.5.2 交叉调试程序实例.............................................................................................. 92 第5章 交叉开发工具链.............................................................................................................. 94 5.1 工具链软件..................................................................................................................... 94 5.1.1 相关软件工程...................................................................................................... 94 5.1.2 软件版本的匹配.................................................................................................. 95 5.1.3 工具链制作流程.................................................................................................. 97 5.2 制作交叉编译器............................................................................................................. 98 5.2.1 准备编译环境...................................................................................................... 98 5.2.2 编译binutils......................................................................................................... 99 5.2.3 编译GCC的辅助编译器.................................................................................. 100 5.2.4 编译生成glibc库.............................................................................................. 101 5.2.5 编译生成完整的GCC编译器.......................................................................... 105 5.3 制作交叉调试器........................................................................................................... 106 5.3.1 编译交叉调试器................................................................................................ 106 5.3.2 编译gdbserver ................................................................................................... 106 第6章 Bootloader..................................................................................................................... 108 6.1 Bootloader ..................................................................................................................... 108 6.1.1 Bootloader 介绍................................................................................................. 108 6.1.2 Bootloader 的启动............................................................................................. 109 6.1.3 Bootloader 的种类..............................................................................................111 6.2 U-Boot编程...................................................................................................................113 6.2.1 U-Boot工程简介................................................................................................113 6.2.2 U-Boot源码结构................................................................................................113 6.2.3 U-Boot的编译....................................................................................................114 6.2.4 U-Boot 的移植....................................................................................................117 6.2.5 添加U-Boot命令...............................................................................................118 6.3 U-Boot的调试.............................................................................................................. 121 6.3.1 硬件调试器........................................................................................................ 121 6.3.2 软件跟踪............................................................................................................ 121 6.3.3 U-Boot启动过程............................................................................................... 123 6.3.4 U-Boot 与内核的关系....................................................................................... 128 ║4 嵌入式系统开发技术详解——基于ARM 6.4 使用U-Boot.................................................................................................................. 133 6.4.1 烧写U-Boot 到Flash ........................................................................................ 134 6.4.2 U-Boot的常用命令........................................................................................... 134 6.4.3 U-Boot的环境变量........................................................................................... 141 第7 章 配置编译内核................................................................................................................ 143 7.1 Linux 内核特点............................................................................................................ 143 7.1.1 Linux 内核版本介绍......................................................................................... 143 7.1.2 Linux 内核特点................................................................................................. 143 7.1.3 Linux 2.6 内核新特性....................................................................................... 144 7.2 配置编译内核源码....................................................................................................... 147 7.2.1 内核源码结构.................................................................................................... 148 7.2.2 内核配置系统.................................................................................................... 150 7.2.3 Kbuild Makefile ................................................................................................. 157 7.2.4 内核编译............................................................................................................ 169 7.2.5 内核编译结果.................................................................................................... 179 7.3 内核配置选项............................................................................................................... 180 7.3.1 使用配置菜单.................................................................................................... 180 7.3.2 基本配置选项.................................................................................................... 181 7.3.3 驱动程序配置选项............................................................................................ 183 第8 章 内核移植浅析................................................................................................................ 185 8.1 移植内核源码............................................................................................................... 185 8.1.1 移植前的准备工作............................................................................................ 185 8.1.2 开发板内核移植................................................................................................ 186 8.1.3 移植后的工作.................................................................................................... 194 8.2 Linux 内核启动过程分析............................................................................................ 194 8.2.1 内核启动流程源代码分析................................................................................ 194 8.2.2 内核自引导程序................................................................................................ 195 8.2.3 内核vmlinux入口............................................................................................ 199 8.2.4 Linux 系统初始化............................................................................................. 201 8.2.5 挂接根文件系统................................................................................................ 206 8.2.6 初始化设备驱动................................................................................................ 208 8.2.7 启动用户空间init进程..................................................................................... 209 第9 章 内核调试技术................................................................................................................ 212 9.1 内核调试方法............................................................................................................... 212 9.1.1 内核调试概述.................................................................................................... 212 9.1.2 学会分析内核源程序........................................................................................ 213 第1 章 目录 5║ 9.1.3 调试方法介绍.................................................................................................... 213 9.2 内核打印函数............................................................................................................... 216 9.2.1 内核映像解压前的串口输出函数.................................................................... 216 9.2.2 内核错误报告子程序........................................................................................ 218 9.2.3 内核打印函数.................................................................................................... 220 9.3 获取内核信息............................................................................................................... 227 9.3.1 系统请求键........................................................................................................ 227 9.3.2 通过/proc接口................................................................................................... 228 9.3.3 通过/sys 接口..................................................................................................... 229 9.3.4 通过ioctl方法................................................................................................... 232 9.4 处理出错信息............................................................................................................... 233 9.4.1 oops信息........................................................................................................... 233 9.4.2 panic ................................................................................................................... 234 9.5 内核源码调试............................................................................................................... 236 9.5.1 KGDB调试内核源代码.................................................................................... 236 9.5.2 BDI2000 调试内核源代码................................................................................ 237 第10 章 制作Linux根文件系统............................................................................................... 242 10.1 根文件系统目录结构................................................................................................. 242 10.1.1 FHS目录结构................................................................................................. 243 10.1.2 文件存放规则.................................................................................................. 246 10.2 添加系统文件............................................................................................................. 247 10.2.1 添加共享链接库.............................................................................................. 247 10.2.2 添加内核模块.................................................................................................. 249 10.2.3 添加设备文件.................................................................................................. 251 10.3 init系统初始化过程.................................................................................................. 253 10.3.1 inittab 文件....................................................................................................... 253 10.3.2 System V init启动过程................................................................................... 256 10.3.3 Busybox init启动过程分析............................................................................ 258 10.4 定制文件系统............................................................................................................. 260 10.4.1 定制应用程序.................................................................................................. 260 10.4.2 配置应用程序自动启动.................................................................................. 260 第11 章 充分利用开源软件...................................................................................................... 262 11.1 开放源代码工程介绍................................................................................................. 262 11.1.1 Linux 系统和开源软件................................................................................... 263 11.1.2 开源软件的特点.............................................................................................. 264 11.2 Busybox使用.............................................................................................................. 265 11.2.1 Busybox工程介绍........................................................................................... 265 ║6 嵌入式系统开发技术详解——基于ARM 11.2.2 配置编译Busybox........................................................................................... 265 11.3 X11 图形系统............................................................................................................. 270 11.3.1 X Windows介绍.............................................................................................. 270 11.3.2 Tiny-X 介绍..................................................................................................... 270 11.3.3 GTK 图形库..................................................................................................... 271 11.4 Qt图形库.................................................................................................................... 277 11.4.1 Qt介绍............................................................................................................. 277 11.4.2 Qt/Embedded介绍........................................................................................... 278 11.4.3 Qt/Embedded架构........................................................................................... 280 11.4.4 Qt/Embedded软件包与安装........................................................................... 281 11.5 MiniGUI图形系统..................................................................................................... 283 11.5.1 MiniGUI图形系统概述.................................................................................. 283 11.5.2 MiniGUI移植.................................................................................................. 285 11.6 MicroWindows图形系统........................................................................................... 290 11.7 Linux 下的网络应用.................................................................................................. 292 11.7.1 嵌入式设备的网络化...................................................................................... 292 11.7.2 TCP/IP协议概述............................................................................................. 292 11.7.3 Linux 下的Socket编程.................................................................................. 294 11.8 嵌入式Linux 的串行通信......................................................................................... 304 11.8.1 Linux 下的串口操作....................................................................................... 304 11.8.2 Linux 串口编程实例....................................................................................... 309 第12 章 系统集成测试.............................................................................................................. 314 12.1 系统集成测试............................................................................................................. 314 12.1.1 系统集成测试概述.......................................................................................... 314 12.1.2 系统集成测试要求.......................................................................................... 315 12.2 系统跟踪工具............................................................................................................. 315 12.2.1 为什么需要跟踪工具...................................................................................... 315 12.2.2 Strace................................................................................................................ 316 12.2.3 Ltrace ............................................................................................................... 316 12.2.4 LTT................................................................................................................... 317 12.3 系统性能测量工具..................................................................................................... 321 12.3.1 代码效率测量.................................................................................................. 321 12.3.2 LTP................................................................................................................... 324 12.3.3 LMbench .......................................................................................................... 325 12.4 测量内存泄漏............................................................................................................. 326 12.4.1 mtrace............................................................................................................... 326 12.4.2 dmalloc............................................................................................................. 327 12.4.3 memwatch ........................................................................................................ 328 第1 章 目录 7║ 12.4.4 YAMD.............................................................................................................. 330 第13 章 部署Linux系统........................................................................................................... 333 13.1 部署Linux系统概述................................................................................................. 333 13.1.1 部署Linux系统的基本流程.......................................................................... 333 13.1.2 部署Linux系统的关键问题.......................................................................... 334 13.2 文件系统类型............................................................................................................. 335 13.2.1 EXT2/EXT3 ..................................................................................................... 335 13.2.2 JFS.................................................................................................................... 337 13.2.3 cramfs............................................................................................................... 339 13.2.4 JFFS/JFFS2 ...................................................................................................... 340 13.2.5 YAFFS.............................................................................................................. 341 13.3 存储设备..................................................................................................................... 343 13.3.1 MTD 类型设备................................................................................................ 343 13.3.2 磁盘类型设备.................................................................................................. 344 13.4 部署Linux系统......................................................................................................... 346 13.4.1 安装MTD 工具............................................................................................... 346 13.4.2 使用磁盘文件系统.......................................................................................... 347 13.4.3 使用RAMDISK 设备..................................................................................... 348 13.4.4 使用MTD 设备和JFFS2文件系统............................................................... 349 13.4.5 系统启动和升级.............................................................................................. 351 第14 章 系统设计开发实例...................................................................................................... 352 14.1 需求分析..................................................................................................................... 352 14.2 系统硬件设计............................................................................................................. 354 14.3 系统软件设计............................................................................................................. 364 14.4 系统集成与部署......................................................................................................... 366

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampLixxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值