最近接触到一款基于泰山派开发板,但是官方的开发环境是基于Ubuntu18.04的,这个版本太老了,甚至无法通过ssh接入最新的IDE,所以我要记录一下我在Ubuntu22.04环境下搭建泰山派编译环境的过程。
一、Ubuntu环境安装
首先当然要安装一个虚拟机,下面这个教程是基于Ubuntu18.04的安装教程,但是区别不大,整体安装流程是一样的,只是需要替换Ubuntu的版本和镜像源。
【VMware+Ubuntu】虚拟机快速安装上手教程
二、SDK下载与准备
官方下载地址:立创·泰山派开发板资料
所需sdk路径:立创·泰山派开发板资料\第05章.【立创·泰山派】系统SDK\【SDK】Linux-kernel4.9
获取下图中的几个文件:
tspi_linux_sdk_repo_20240131.tar.gz:带repo版本的SDK
tspi_linux_sdk_repo_20240131_md5sum.txt:带repo版本的SDK校验文件
buildroot_dl_4c7c9df616fb.tar.gz:buildroot相关库,大概率会下载失败,所以这里提前下好
buildroot_dl_4c7c9df616fb_md5sum.txt:buildroot相关库的校验文件
buildroot_dl_4c7c9df616fb_ubuntu22.04.tar.gz:针对Ubuntu 22.04重新打包的buildroot相关(该文件官方没有,是我针对Ubuntu22.04报错重新打包的,自己用的话无需重新打包,后面我会解释如何修改避免dl库文件编译报错)
buildroot系统编译
这里采用的构建方式是buildroot,因为官方也是推荐这种方法,所以我们这里也采用这种方式。
1、校验文件完整性
#使用md5sum获取md5值,与对应的xxx_md5sum.txt文档中进行对比,保证一致md5sum tspi_linux_sdk_repo_20240131.tar.gz a30f1d0fdb97ca994a82689fa26ba429 tspi_linux_sdk_repo_20240131.tar.gz md5sum buildroot_dl_4c7c9df616fb.tar.gz 3b3b023ef9122f518e1e5dd00fc0fa0a buildroot_dl_4c7c9df616fb.tar.gz2、解压工程文件
校验通过之后解压tspi_linux_sdk_repo_20240131.tar.gz,建议先建立一个work_place文件夹用来放解压后的文件。然后将sdk解压到里面,会得到一个.repo文件夹。(解压过程视设备的性能而定,耐心等待)
tar-xvzftspi_linux_sdk_repo_20240131.tar.gz3、同步代码
解压完成之后,需要同步代码,依次输入如下指令
sudoapt-getupdatesudoapt-getinstallgit-ysudoaptinstallrepo-ysudoapt-getinstallpython2.7sudoapt-getinstallpython3因为我们编译需要指定python2.7,所以要设置一下python版本切换
#设置 python2.7sudoupdate-alternatives--install/usr/bin/python python /usr/bin/python2.71#设置 python3.10sudoupdate-alternatives--install/usr/bin/python python /usr/bin/python3.102切换到python2.7
#选择1,即是指定了python2.7版本sudoupdate-alternatives--configpython
上述动作成功做完之后,就可以开始代码同步了
.repo/repo/reposync-l-j8
替换buildroot库,将之前准备好的库压缩包解压到work_place文件夹中
#解压Ubuntu22.04的dl库,没有的直接解压官方的buildroot_dl_4c7c9df616fb.tar.gztar-xzfbuildroot_dl_4c7c9df616fb_ubuntu22.04.tar.gz#解压完成以后输入以下指令查看是否替换成功lsbuildroot/dl/
接下来安装各类编译所需的工具,直接拷贝下面的指令即可,部分工具安装需要yes+回车确认。
sudoapt-getinstallgitsshmakegcc libssl-dev liblz4-toolexpectg++ patchelf chrpathgawktexinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilibunzipdevice-tree-compiler ncurses-dev解决Ubuntu22.04环境下编译问题
到这一步,基本上就把编译前准备工作都做完了,但是实际上直接编译还是会报错的,所以需要对报错进行处理。按照下面的操作进行梳理就行。
1、dl库文件修改
这个库是我我自己修改打包给自己备份的,其实内部只做了一个非常简单的修改,先在解压好的dl文件夹中找到squashfs-3de1687d7432ea9b302c2db9521996f506c140a3.tar.gz文件,并将其解压。然后找到mksquashfs.h文件。需要在这个位置前面加上extern,然后将这个文件重新打包,并替换掉原来的squashfs-3de1687d7432ea9b302c2db9521996f506c140a3.tar.gz。
2、增加python2的软连接
由于泰山派的项目强指定python2,而Ubuntu22.04刚好没有,所以我们需要手动增加一下
ln-sf/usr/bin/python2.7 /usr/local/bin/python23、BR2_EXTERNAL_FILE文件找不到的问题
修改方法如下图所示,在buildroot/Makefile文件中进行修改即可
这些问题解决之后,就可以正常编译了,如果还遇到其他问题,欢迎讨论~