立创泰山派linux sdk在Ubuntu22.04上构建报错解决方法记录
遇到第一个错误。缺少python2。
先看下python2这个命令是否存在。然后看下python命令默认调用的哪个。再看下python3是否存在。最后确认下系统内和python相关的命令都有哪些。
这里的ls命令是列出目录下的子目录和文件,/usr/bin/python* 是指以python为前缀的所有文件和目录,* 在这里表示通配符。/usr目录是通常我们安装软件的默认路径,bin表示二进制可执行文件目录。
这里可以看到,ubuntu22.04系统里,默认装的是python3,且不存在一个名叫python的可执行文件。但是我们的构建脚本需要用它,所以就报错了。
手动装一个吧。就用python2.7版本吧。然后创建名为python的软链接,类似于Windows下的快捷方式。软链接指向python2.7。
在/usr/bin下创建文件需要root权限。ln表示创建链接文件,-s 软链接。前面那个路径是目标文件,后面那个路径是新文件。
现在python2命令已经默认代表python2.7了。
继续构建。遇到第二个问题。缺少bc命令。
直接装,装完继续构建。
遇到第三个问题,这次是python命令找不到了。
这里就像第一个问题一样,创建名为python的新软链接,这次指向python3。
这里问题的原因是,tspi文档中是以Ubuntu18.04为例的,18.04中默认的python是python2.7,而我们现在用的python22.04默认用的是python3.10。python2到python3有大改动。部分语法不兼容。tspi的sdk是由多个不同的项目组合而成的,比如这里用于构建根文件系统和标准库文件的buildroot项目、用于构建引导启动程序的uboot项目、用于Linux核心支持的Linux-kernel项目。这里面python主要作脚本,不同模块需要的python版本可能不一致,所以脚本编写者用python2和python(指python3)来做区分。
搞完继续构建。遇到第四个报错。还是缺命令。装。装完继续构建。
好。这里遇到了第一个稍微复杂点的错误。
从这里看不出什么明显痕迹,往上翻,找到第一行标红的地方。
打开这个日志文件,看下详细报错。
缺个文件,下载。下完继续编。
又说缺rsync,下,下完继续编。
然后报错:
解决方案:
既然root下make不行,那就不用sudo make,直接用make。直接make遇到dl目录下创建目录失败报mkdir: cannot create directory ‘…’: Permission denied。命令行执行sudo chmod -R 777 你的目录/dl,然后make即可解决。
出现这样的画面就是正在下载三方库(软件)源码了。这个过程会很漫长。
又报错了,还是缺命令。下,下完继续。查了下,这命令是bzip2里的,不是bzcat。
唉......有报错,浏览器搜一下,有现成的解决方法。
Ubuntu22编译rk3566 buildroot报错 multiple definition of `fwriter_buffer‘; mksquashfs.o:(.bss+0x200180):_unbantu22 mksquashfs.o在哪-CSDN博客
照着做吧。下面diff开头的复制到这个patch文件里。然后把里面的host-squashfs目录删了。
然后继续编。
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;
这样就是编好了。
评论