Linux环境下交叉编译工具链的制作

本文参照教材嵌入式Linux开发入门宝典

一、在Windows上安装虚拟机

1、浏览器搜索VMware,下载VMware Workstation Pro最新版,目前为16.2.3,并完成安装。

2、打开VMware,新建一个虚拟机。

(1)点击文件->新建虚拟机/在主页点击创建新的虚拟机;

Linux环境下交叉编译工具链的制作_第1张图片

 (2)在虚拟机向导配置中选择自定义,点击下一步;

Linux环境下交叉编译工具链的制作_第2张图片

 (3)虚拟机硬件兼容性选择Workstation 16.2.x,默认即可(以下配置完成后依次点击下一步即可,操作简单,故没有粘贴截图);

(4)安装客户机操作系统选择稍后安装操作系统;

(5)客户机操作系统选择Linux,版本选择Ubuntu;

(6)对虚拟机进行命名,根据自己的磁盘所剩空间或个人喜好选择安装位置,这里我选择安装在E盘下的Virtual Machines文件夹下;

Linux环境下交叉编译工具链的制作_第3张图片

 (7)处理器配置->默认;虚拟机内存空间分配根据自己PC机动态分配,我这里选择分配4G内存;网络类型选择->NAT方式;I/O控制器选->默认;磁盘类型选择->默认;选择磁盘->创建新虚拟硬盘;最大磁盘大小根据自己的磁盘空间进行分配,不能超过磁盘所剩最大空间,因为我的PC机硬盘分区是NAFS格式,故可以将磁盘存储为单个文件;给磁盘文件命名(可默认);

(8)检查设置是否与以上所设值匹配,若匹配,单击完成按钮完成虚拟机的创建,若有误,返回修改即可;

Linux环境下交叉编译工具链的制作_第4张图片

 Linux环境下交叉编译工具链的制作_第5张图片

 二、在虚拟机上安装Linux操作系统

1、登录Ubuntu官网,下载桌面iso映像文件,此处我下载的版本是ubuntu-20.04.4-desktop-amd64.iso;

2、下载完成后在VMware中点击“编辑虚拟机设置”,点击CD/DVD,选择使用ISO映像文件,并点击浏览将下载好的iso映像文件添加上去,点击确定即可;

Linux环境下交叉编译工具链的制作_第6张图片

3、点击开启此虚拟机,安装操作系统

选择中文简体->安装Ubuntu

Linux环境下交叉编译工具链的制作_第7张图片

 键盘布局选择Chinese(当然,精通其他语言的读者也可以选择键盘布局),点击继续

Linux环境下交叉编译工具链的制作_第8张图片

 选择最小安装/正常安装,单击继续。我的PC机已经安装好了交叉工具编译链,此处选择最小安装(读者可根据需求自行安装,正常安装会多一些最小安装没有的Application,像类似于Windows下的office办公软件);

Linux环境下交叉编译工具链的制作_第9张图片

 点击其他选项对磁盘进行分区

点击新建分区表->继续

点击空闲->+号->设置大小->设置主分区/逻辑分区->新分区的位置->用于->挂载点(同教材即可)剩下两个分区新建过程跟这个差不多;

Linux环境下交叉编译工具链的制作_第10张图片

 设置完成如下图所示:

Linux环境下交叉编译工具链的制作_第11张图片

 点击现在安装,单击继续,时区选择“上海”,点击继续,设置用户名和密码

Linux环境下交叉编译工具链的制作_第12张图片

 点击继续,等待系统完成安装。

安装完成后重启,点击配置虚拟机设置,将CD/DVD项的启动时连接取消即可。

三、配置宿主Linux操作系统

1、宿主操作系统网络设置

点击编辑虚拟机设置,选择网络适配器为桥接模式,点击确定。

Linux环境下交叉编译工具链的制作_第13张图片

打开Window操作系统命令提示符,输入ipconfig /all查看宿主机IP配置,打开Linux系统终端,输入sudo nano /etc/network/interface,添加静态IP设置(参照教材),将Window操作系统和Linux操作系统IP地址设置为同一网段即可

按ctrl+x保存后重启网络服务,输入sudo service network-manager restart,重启网络服务,完成后即可看到网络连接成功,说明配置成功,或在终端执行ping www.baidu.com命令,可以ping通即表明配置成功。

Linux环境下交叉编译工具链的制作_第14张图片

 2、打开FTP、SSH、和NFS服务

(1)更新软件源

步骤同教材,在Linux终端下输入相应命令即可。

(2)安装设置启动FTP服务

在终端输入sudo apt install vsftpd命令,完成安装

Linux环境下交叉编译工具链的制作_第15张图片

 修改配置文件/etc/vsftpd.conf(找到对应的代码部分,将#删除即可)

Linux环境下交叉编译工具链的制作_第16张图片

 保存配置文件并重启FTP服务,使设置生效即可

(3)安装设置启动SSH服务和NFS服务

此处没有放截图,根据教材做的,基本过程同(2)安装FTP

四、在宿主机上安装、配置开发环境

1、安装编译环境

2、安装编辑工具vim(vim用不到可以不装)

3、修改工作目录opt的所有者

以上三步比较简单,按教材上给的终端命令就可完成,因此没有截图,重点放在了以下制作交叉编译工具链。

五、制作交叉编译工具链-自己制作工具链

1、我下载的工具链是crosstool-ng1.24.0,可以在Ubuntu中使用火狐浏览器登录以下网址进行下载:http://crosstool-ng.github.io/2019/04/13/release-1.24.0

Linux环境下交叉编译工具链的制作_第17张图片

在opt文件夹下创建目录tools,将下载好的crosstool-ng移动到该文件夹下

1、解压

在终端输入教材上的命令,完成解压

Linux环境下交叉编译工具链的制作_第18张图片

 2、安装软件依赖包

Linux环境下交叉编译工具链的制作_第19张图片

00a952fa15e843488b128415a0f19915.png

5111f624fa444e039a0b6b534fa916b6.png

 这里我分了三次安装,其实可以一次性安装,各个依赖包之间用逗号隔开就可以了。

3、编译安装crosstool-ng

在配置crosstool-ng时会提示缺少某个软件依赖包,应该时所用crosstool-ng跟教材所用版本不一致的原因,按步骤(2)将缺少的软件依赖包依次进行安装,重新进行编译,直到编译不再提示缺少软件依赖包即可。

f381766eb31447f694c02e84f4f743d8.png

 编译时还会出现一个问题,就是一直显示编译缺少libtool,但是安装却发现libtool已经存在,再安装一个libtool-bin即可解决该问题。

455a3e5e17644d9ba5e3a0c1cc26c883.png

 编译通过会有如下提示

Linux环境下交叉编译工具链的制作_第20张图片

 至此编译工作就完成啦,此时执行make和make install命令即可

4、将crosstool-ng工具命令添加到环境变量PATH

再文件系统中打开/opt/tools/crosstool_install/bin目录,即可看到ct-ng已经存在

Linux环境下交叉编译工具链的制作_第21张图片

 执行ct-ng help命令,即可看到crosstool-ng的版本信息

Linux环境下交叉编译工具链的制作_第22张图片

 5、选择配置文件

执行ct-ng list-samples查看crosstool-ng默认支持的处理器

Linux环境下交叉编译工具链的制作_第23张图片

 复制默认配置文件到crosstool_build,并复制crosstool.config为.config

.config文件为隐藏文件,需要使用ls -al命令才能看到该文件

Linux环境下交叉编译工具链的制作_第24张图片

 6、执行menuconfig配置工具链

执行ct-ng menuconfig打开配置面板

Linux环境下交叉编译工具链的制作_第25张图片

 依次根据教材做配置的修改

Linux环境下交叉编译工具链的制作_第26张图片

Linux环境下交叉编译工具链的制作_第27张图片

Linux环境下交叉编译工具链的制作_第28张图片 Linux环境下交叉编译工具链的制作_第29张图片

 Linux环境下交叉编译工具链的制作_第30张图片

Linux环境下交叉编译工具链的制作_第31张图片

Linux环境下交叉编译工具链的制作_第32张图片 Linux环境下交叉编译工具链的制作_第33张图片

 7、下载工具链所依赖的软件包

使用命令查看.config文件,里面可以查到相关软件包的版本信息,依次进行下载,并将其放在/opt/tools/crosstool/src下即可

Linux环境下交叉编译工具链的制作_第34张图片

Linux环境下交叉编译工具链的制作_第35张图片

如duma_2_5_15,打开网址下载对应版本即可,或者直接火狐浏览器搜索对应的软件包名称,找到对应版本进行下载。

8、编译

由于我已经成功搭建过一次交叉编译工具链,编译过程缓慢,因此我直接终止了本次编译。以下是我在另一台虚拟机上成功搭建后保留的截图。

Linux环境下交叉编译工具链的制作_第36张图片

 下载的软件依赖包:

Linux环境下交叉编译工具链的制作_第37张图片

 工具版本信息

Linux环境下交叉编译工具链的制作_第38张图片

至此,交叉编译工具链就制作好了,读者就可以愉快的进行嵌入式开发啦。

你可能感兴趣的:(linux,ubuntu)