【教程】使用Ubuntu24.04编译泰山派Linux SDK

为什么选择24.04

        1.立创官方建议的18.04已经结束长期支持(23年),而20.04也已经步入生命末期(25年),官方虽然放出了相关的22.04可能遇到的问题以及解决方案,但是配套的视频却是使用的20.04,有点尴尬

  立创官方教程:

  2. SDK编译 | 立创开发板技术文档中心https://wiki.lckfb.com/zh-hans/tspi-rk3566/project-case/fat-little-cell-phone/sdk-compile.html

  立创相关解决方案:【共建】【立创·泰山派RK3566开发板】Ubuntu 22.04LTS编译 | 立创开发板技术文档中心https://wiki.lckfb.com/zh-hans/tspi-rk3566/documentation/gj-ubuntu-22-04-lts-compile.html

        2.鄙人新买的电脑,趁着打折买了一块新的固态硬盘,想装双系统,狠狠地体验一下实体机编译,但是正是因为太新的原因,18.04无法找到网卡驱动(网卡型号MT7922),又不想额外再买一个usb网卡占用usb接口位置(主要是没钱加上不想用速度太慢的低端卡)

        3.体验了一下ubuntu,至少24.04版本深得我心,于是决定当作主系统驻留下来探索一下,而且linux目前的生态建设个人认为是可用的,我经常用的软件也都适配了linux版本没适配的去用steam打开

使用24.04会遇到的问题及其解决方案

1.Python相关的问题

ubuntu24.04遇到的第一个大问题莫过于缺少python2,python2已经早已停止了维护支持,现在在终端中使用apt下载到的python只会是python3.x,我们需要前往python官网去下载python2,个人建议选择2.7.18这个最后一个版本,此教程也是在这一版下编辑的

Python官网下载页:Download Python | Python.org

网络问题无法下载可以通过网盘获取:

链接: https://pan.baidu.com/s/1VL78njr7krmmCYfYEEic2g?pwd=bsmc 提取码: bsmc 

 解压后在进入解压后的文件夹打开终端依次运行以下命令

浅浅地先双升一下

sudo apt update && sudo apt upgrade

 给初学者解释一下(用泰山派的还看到这篇文章的应该都是初学者)

./configure用来生成makefile文件,可以理解成生成一个可以直接调用的脚本,我们接下来要用到makefile里面的功能

--enable-optimizations 启用优化,可以加快编译速度

CFLAGS=-fPIC是一个扩展选项,用来指定编译器(如GCC)需要生成位置无关代码,因为后续使用过程中需要创建共享库,不加此项会导致后续编译SDK不通过

./configure --enable-optimizations CFLAGS=-fPIC

补充:如果提示无法编译,可能是因为你没有安装相关的编译器,可以先安装 泰山派编译所需要的库(们)也就是前文中提到的SDK链接网页中的

sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev

 make是指使用makefile文件中的命令,使用altinstall而不是install是用来创建额外的安装路径防止与本地的python3引起冲突

make altinstall

等待运行结束输入 

 如果你这个没看懂你该好好反思一下自己的英语水平了bro

whereis python2.7

有这样子的结果就证明安装成功了

接着要参考立创给的文档里的内容使用update-alternatives进行相关的设置

我们只需要把python2.7的路径改成whereis得到的第一个含bin路径的路径即可,如果你和我一样的话也就是依次运行

sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python2.7 1

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

这里解释一下update-alternatives的用法,常见的有--install,--config,--remove,顾名思义分别是安装,设置,删除,至于为什么是usr/bin,这个目录是专门用来存放linux系统中的软连接的地方,你可以先不正确地理解成windows中的环境变量的目录(解释起来太麻烦了,现这么理解着吧反正也不影响使用

完事之后可以用python -V检查一下是否成功

至此如果你欢天喜地地去参照官方文档进行SDK编译你会遇到一个大大的ERROR:No python2

解决此问题也很简单,只需要进入/usr/bin目录下再添加一个软链接,把刚才安装的python2.7.18和python2连接起来就可以了(我也很无语,为什么不会自动检测添加

代码如下:

cd /usr/bin/

sudo ln -s /usr/local/bin/python2.7 python2

此刻,Python相关的问题就结束了,可以剩下的步骤按照官方文档痛快地去build all了(bushi

2.重定义相关的问题(multiple definition of bwriter_buffer)

必须要提醒的是:如果你已经造成这个错误,必须使用./build.sh cleanall相关的命令清除掉相关构建,否则接下来的方法会不起作用。

还有一点:立创给出的相关解决方案在24.02中不起作用,如果按照官方的教程来,你只会消除部分错误,但是仍然不能够通过编译。

如果你在编译的过程中遇到了如同以下的问题

null文章浏览阅读936次。host-squashfs_squashfs multiple definition of https://blog.csdn.net/weixin_37933648/article/details/131461406

 可以参考以下链接进行解决

https://blog.csdn.net/qq_35762024/article/details/144891096文章浏览阅读221次。复制下面内容到 **buildroot/package/squashfs/0001-multiple-definition.patch **中。清空编译缓存,重新编译。然后就可以编译成功了。 https://blog.csdn.net/qq_35762024/article/details/144891096

以下是具体操作步骤:

值得注意一点的是泰山派LinuxSDK中同路径下没有0001-multiple-definition.patch这个文件,我们只需要找到0001-include-sysmacros.patch中以编辑器的形式打开,将以下代码添加至文件末尾,同样可以解决这一错误,而且这个过程中不需要用到build过程中产生的中间件(mksquashfs.h)理论上可以提前添加一次成功

diff -ruN squashfs-3de1687d7432ea9b302c2db9521996f506c140a3/squashfs-tools/mksquashfs.h squashfs-3de1687d7432ea9b302c2db9521996f506c140a3-patch/squashfs-tools/mksquashfs.h
--- squashfs-3de1687d7432ea9b302c2db9521996f506c140a3/squashfs-tools/mksquashfs.h       2015-12-07 09:42:03.000000000 +0800
+++ squashfs-3de1687d7432ea9b302c2db9521996f506c140a3-patch/squashfs-tools/mksquashfs.h 2025-01-02 16:59:52.994326895 +0800
@@ -133,7 +133,7 @@
 #define BLOCK_OFFSET 2
 
 extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache;
-struct cache *bwriter_buffer, *fwriter_buffer;
+extern struct cache *bwriter_buffer, *fwriter_buffer;
 extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer,
        *to_frag, *locked_fragment, *to_process_frag;
 extern struct append_file **file_mapping;

3.一个难以描述的,无法确定是谁导致的问题

在使用./build.sh all的时候,经常在某一部分编译完成后无法自动地去找到继续编译的部分,具体的表现比如在编译完成buildroot部分后无法自动编译recovery部分,这种情况经过尝试,只需要再次使用./build.sh all又可以自动继续完成编译了(灵异事件) 目前没有解决方案,反正编译能过就行了,又不是不能用

写在最后的话

以后有机会会出个视频教程,这篇文章也是我本人第一次尝试写教程,文章中有些表述可能并不恰当,甚至有些许错误,欢迎大家即使私信我,我会以本人最快的速度改正(如果看到的话

最后感谢@GentleIAS和文章中引用链接的作者们,没有他们的贡献,本章也不会这么快和大家见面

内容概要:本文深入探讨了使用 Buildroot 构建嵌入式 Ubuntu 根文件系统的高阶实战方法。首先介绍了 Buildroot 和嵌入式 Ubuntu 根文件系统的基础知识,强调了 Buildroot 在嵌入式 Linux 系统开发中的重要性及其自动化、高效的特点。接着详细描述了高阶实战的环境搭建,包括硬件和软件环境的准备,如选择开发板、PC 机配置、Ubuntu 系统安装、Buildroot 下载与解压、交叉编译工具链安装等。实战前的关键准备工作涉及 Buildroot 配置文件详解和定制化配置要点,如目标平台选择、软件包裁剪等。高阶实战步骤涵盖了从初始化 Buildroot 项目到配置文件系统镜像,再到添加第三方软件包的全过程。文章还讨论了构建过程中可能出现的问题及解决方法,如依赖缺失、编译错误、网络下载问题等。最后,通过在嵌入式设备上测试根文件系统并实施性能优化策略,验证了构建成果的有效性和稳定性。 适合人群:具备一定嵌入式开发基础,特别是对 Linux 系统有一定了解的研发人员和技术爱好者。 使用场景及目标:①掌握 Buildroot 构建嵌入式 Ubuntu 根文件系统的全流程;②了解如何根据具体需求选择和配置目标平台、软件包等;③学习如何解决构建过程中遇到的常见问题;④提升嵌入式系统的性能和稳定性。 阅读建议:本文内容详尽,涵盖从环境搭建到实战操作的各个环节,建议读者按照章节顺序逐步学习,同时结合实际操作进行练习,以加深理解和掌握技能。在学习过程中,遇到问题时可以参考文中提供的解决方法,并积极查阅相关资料或寻求社区支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值