本文参照教材嵌入式Linux开发入门宝典
一、在Windows上安装虚拟机
1、浏览器搜索VMware,下载VMware Workstation Pro最新版,目前为16.2.3,并完成安装。
2、打开VMware,新建一个虚拟机。
(1)点击文件->新建虚拟机/在主页点击创建新的虚拟机;
(2)在虚拟机向导配置中选择自定义,点击下一步;
(3)虚拟机硬件兼容性选择Workstation 16.2.x,默认即可(以下配置完成后依次点击下一步即可,操作简单,故没有粘贴截图);
(4)安装客户机操作系统选择稍后安装操作系统;
(5)客户机操作系统选择Linux,版本选择Ubuntu;
(6)对虚拟机进行命名,根据自己的磁盘所剩空间或个人喜好选择安装位置,这里我选择安装在E盘下的Virtual Machines文件夹下;
(7)处理器配置->默认;虚拟机内存空间分配根据自己PC机动态分配,我这里选择分配4G内存;网络类型选择->NAT方式;I/O控制器选->默认;磁盘类型选择->默认;选择磁盘->创建新虚拟硬盘;最大磁盘大小根据自己的磁盘空间进行分配,不能超过磁盘所剩最大空间,因为我的PC机硬盘分区是NAFS格式,故可以将磁盘存储为单个文件;给磁盘文件命名(可默认);
(8)检查设置是否与以上所设值匹配,若匹配,单击完成按钮完成虚拟机的创建,若有误,返回修改即可;
二、在虚拟机上安装Linux操作系统
1、登录Ubuntu官网,下载桌面iso映像文件,此处我下载的版本是ubuntu-20.04.4-desktop-amd64.iso;
2、下载完成后在VMware中点击“编辑虚拟机设置”,点击CD/DVD,选择使用ISO映像文件,并点击浏览将下载好的iso映像文件添加上去,点击确定即可;
3、点击开启此虚拟机,安装操作系统
选择中文简体->安装Ubuntu
键盘布局选择Chinese(当然,精通其他语言的读者也可以选择键盘布局),点击继续
选择最小安装/正常安装,单击继续。我的PC机已经安装好了交叉工具编译链,此处选择最小安装(读者可根据需求自行安装,正常安装会多一些最小安装没有的Application,像类似于Windows下的office办公软件);
点击其他选项对磁盘进行分区
点击新建分区表->继续
点击空闲->+号->设置大小->设置主分区/逻辑分区->新分区的位置->用于->挂载点(同教材即可)剩下两个分区新建过程跟这个差不多;
设置完成如下图所示:
点击现在安装,单击继续,时区选择“上海”,点击继续,设置用户名和密码
点击继续,等待系统完成安装。
安装完成后重启,点击配置虚拟机设置,将CD/DVD项的启动时连接取消即可。
三、配置宿主Linux操作系统
1、宿主操作系统网络设置
点击编辑虚拟机设置,选择网络适配器为桥接模式,点击确定。
打开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通即表明配置成功。
2、打开FTP、SSH、和NFS服务
(1)更新软件源
步骤同教材,在Linux终端下输入相应命令即可。
(2)安装设置启动FTP服务
在终端输入sudo apt install vsftpd命令,完成安装
修改配置文件/etc/vsftpd.conf(找到对应的代码部分,将#删除即可)
保存配置文件并重启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
在opt文件夹下创建目录tools,将下载好的crosstool-ng移动到该文件夹下
1、解压
在终端输入教材上的命令,完成解压
2、安装软件依赖包
这里我分了三次安装,其实可以一次性安装,各个依赖包之间用逗号隔开就可以了。
3、编译安装crosstool-ng
在配置crosstool-ng时会提示缺少某个软件依赖包,应该时所用crosstool-ng跟教材所用版本不一致的原因,按步骤(2)将缺少的软件依赖包依次进行安装,重新进行编译,直到编译不再提示缺少软件依赖包即可。
编译时还会出现一个问题,就是一直显示编译缺少libtool,但是安装却发现libtool已经存在,再安装一个libtool-bin即可解决该问题。
编译通过会有如下提示
至此编译工作就完成啦,此时执行make和make install命令即可
4、将crosstool-ng工具命令添加到环境变量PATH
再文件系统中打开/opt/tools/crosstool_install/bin目录,即可看到ct-ng已经存在
执行ct-ng help命令,即可看到crosstool-ng的版本信息
5、选择配置文件
执行ct-ng list-samples查看crosstool-ng默认支持的处理器
复制默认配置文件到crosstool_build,并复制crosstool.config为.config
.config文件为隐藏文件,需要使用ls -al命令才能看到该文件
6、执行menuconfig配置工具链
执行ct-ng menuconfig打开配置面板
依次根据教材做配置的修改
7、下载工具链所依赖的软件包
使用命令查看.config文件,里面可以查到相关软件包的版本信息,依次进行下载,并将其放在/opt/tools/crosstool/src下即可
如duma_2_5_15,打开网址下载对应版本即可,或者直接火狐浏览器搜索对应的软件包名称,找到对应版本进行下载。
8、编译
由于我已经成功搭建过一次交叉编译工具链,编译过程缓慢,因此我直接终止了本次编译。以下是我在另一台虚拟机上成功搭建后保留的截图。
下载的软件依赖包:
工具版本信息
至此,交叉编译工具链就制作好了,读者就可以愉快的进行嵌入式开发啦。