为什么选择24.04
1.立创官方建议的18.04已经结束长期支持(23年),而20.04也已经步入生命末期(25年),官方虽然放出了相关的22.04可能遇到的问题以及解决方案,但是配套的视频却是使用的20.04,有点尴尬
立创官方教程:
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中不起作用,如果按照官方的教程来,你只会消除部分错误,但是仍然不能够通过编译。
如果你在编译的过程中遇到了如同以下的问题
可以参考以下链接进行解决
以下是具体操作步骤:
值得注意一点的是泰山派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和文章中引用链接的作者们,没有他们的贡献,本章也不会这么快和大家见面