ubuntu22.04下rv1109 rootfs编译问题处理

原文地址::ubuntu22.04下rv1109 rootfs编译问题处理-CSDN博客

相关文章

1、Ubuntu22 tina-linux 编译报错记录----Ubuntu22 tina-linux 编译报错记录_sigstksz-CSDN博客

2、firefly AIO-RK3399J Linux SDK编译报错解决----firefly AIO-RK3399J Linux SDK编译报错解决_host-libglib2 2.62.4-CSDN博客

3、rk3399 buildroot ubuntu20版本编译遇到问题----rk3399 buildroot ubuntu20版本编译遇到问题

ubuntu22.04下rv1109 rootfs编译问题处理
buildroot编译出错记录
问题一:c-stack.c的SIGSTKSZ错误
解决办法
问题二:libfakeroot.c的_STAT_VER报错
解决办法
问题三:fwriter_buffer重复定义
解决办法
问题四: qfloat16.h报错
解决办法
问题五: makedevs无法创建设备节点
解决办法
注意事项
buildroot编译出错记录
出于对Ubuntu新版本系统的体验,将系统更新到了ubuntu22.04了。然后在编译rv1109 sdk时出现了一些异常的错误。但是已经不回去了,只能硬着头皮一路走下去了。并将错误记录以下,以便下次有类似错误,做个参考。

问题一:c-stack.c的SIGSTKSZ错误
buildroot 报错:c-stack.c:55:26:error:missing binary operator before token “(“55

解决办法
在buildroot目录中找到c-stack.c文件,并更改c-stack.c文件中,SIGSTKSZ的宏定义。

find -name c-stack.c

gedit c-stack.c

将以下内容:

#ifndef SIGSTKSZ
# define SIGSTKSZ 16384
#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
/* libsigsegv 2.6 through 2.8 have a bug where some architectures use
   more than the Linux default of an 8k alternate stack when deciding
   if a fault was caused by stack overflow.  */
# undef SIGSTKSZ
# define SIGSTKSZ 16384
#endif
1
2
3
4
5
6
7
8
9
更改为:

#ifndef SIGSTKSZ
# define SIGSTKSZ 16384
//#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
/* libsigsegv 2.6 through 2.8 have a bug where some architectures use
   more than the Linux default of an 8k alternate stack when deciding
   if a fault was caused by stack overflow.  */
//# undef SIGSTKSZ
//# define SIGSTKSZ 16384
#endif
1
2
3
4
5
6
7
8
9
问题二:libfakeroot.c的_STAT_VER报错
libfakeroot.c:99:40: error: ‘_STAT_VER’ undeclared

解决办法
更改libfakeroot.c文件,添加宏定义

find -name libfakeroot.c

gedit libfakeroot.c

添加内容:

#ifndef _STAT_VER
 #if defined (__aarch64__)
  #define _STAT_VER 0
 #elif defined (__x86_64__)
  #define _STAT_VER 1
 #else
  #define _STAT_VER 3
 #endif
#endif
1
2
3
4
5
6
7
8
9
问题三:fwriter_buffer重复定义
read_fs.o:(.bss+0x0): multiple definition of `fwriter_buffer’; mksquashfs.o:(.bss+0x400be8):

解决办法
更改mksquashfs相关文件,去掉bwriter_buffer,与fwriter_buffer的定义,改为‘extern’。

find -name “mksquashfs*”

gedit mksquashfs.h

将:struct cache *bwriter_buffer, *fwriter_buffer;

改为: extern struct cache *bwriter_buffer, *fwriter_buffer;

gedit mksquashfs.c

将: struct cache *bwriter_buffer, *fwriter_buffer;

改为: //struct cache *bwriter_buffer, *fwriter_buffer;

问题四: qfloat16.h报错
qfloat16.h: numeric_limits’ is not a class template

解决办法
修改 Src/qtbase/src/corelib/global/qglobal.h

将:

#ifdef __cplusplus
#  include <type_traits>
#  include <cstddef>
#  include <utility>
#endif
#ifndef __ASSEMBLER__
#  include <assert.h>
#  include <stddef.h>
#endif
1
2
3
4
5
6
7
8
9
改为:

#ifdef __cplusplus
#  include <type_traits>
#  include <cstddef>
#  include <utility>
#  include <limits>
#endif
#ifndef __ASSEMBLER__
#  include <assert.h>
#  include <stddef.h>
#endif
1
2
3
4
5
6
7
8
9
10
问题五: makedevs无法创建设备节点
makedevs: line 27: can’t create node /dev/console: Operation not permitted

解决办法
经查找错误信息,是fakeroot执行fakeroot.fs时报的错。因为是升级了ubuntu系统,可能存在fakeroot版本过低导致。于是将fakeroot版本从1.20.2更新到了1.32.1.操作如下:

在git.buildroot.org中下载了最新的buildroot文件,在里面找到fakeroot目录下:fakeroot.hash与fakeroot.mk文件。
备份buildroot/package/fakeroot目录下原有文件。
将新的fakeroot.hash与fakeroot.mk文件拷贝到buildroot/package/fakeroot目录下。
重新编译,问题解决。
注意事项
在编译recovery时,也需要注意以上更新,否则也会报错。
————————————————
版权声明:本文为CSDN博主「一笼烟波聚又散」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/icemou/article/details/132474042

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值