解决 Builroot 系统编译 perl 编译报错问题

本文提供一种修复 Builroot 系统编译 perl 编译报错途径

在这里插入图片描述

2025-05-04T22:45:08 rm -f pod/perl5261delta.pod
2025-05-04T22:45:08 /usr/bin/ln -s perldelta.pod pod/perl5261delta.pod
2025-05-04T22:45:08 /usr/bin/gcc -c -DPERL_CORE -fwrapv -fpcc-struct-return -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -Wall op.c
2025-05-04T22:45:08 In file included from numeric.c:30:
2025-05-04T22:45:08 In function 'S_my_atof_infnan',
2025-05-04T22:45:08 inlined from 'Perl_my_atof2' at numeric.c:1428:21:
2025-05-04T22:45:08 perl.h:6262:29: warning: argument 1 null where non-null expected [-Wnonnull]
2025-05-04T22:45:08 6262 | #  define Perl_strtod(s, e) strtod(s, e)
2025-05-04T22:45:08 |                             ^~~~~~~~~~~~
2025-05-04T22:45:08 numeric.c:1303:18: note: in expansion of macro 'Perl_strtod'
2025-05-04T22:45:08 1303 |             nv = Perl_strtod(fake, &endp);
2025-05-04T22:45:08 |                  ^~~~~~~~~~~
2025-05-04T22:45:08 /usr/bin/gcc -c -DPERL_CORE -fwrapv -fpcc-struct-return -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -Wall perly.c
2025-05-04T22:45:08 In file included from perl.h:790,
2025-05-04T22:45:08 from numeric.c:30:
2025-05-04T22:45:08 numeric.c: In function 'Perl_my_atof2':
2025-05-04T22:45:08 /usr/include/stdlib.h:118:15: note: in a call to function 'strtod' declared 'nonnull'
2025-05-04T22:45:08 118 | extern double strtod (const char *__restrict __nptr,
2025-05-04T22:45:08 |               ^~~~~~
2025-05-04T22:45:10 /usr/bin/gcc -fstack-protector-strong -L/usr/local/lib -o miniperl     opmini.o perlmini.o  gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o  miniperlmain.o  -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
2025-05-04T22:45:10 ./miniperl -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
2025-05-04T22:45:10 Attempt to free unreferenced scalar: SV 0x563360ecf450.
2025-05-04T22:45:10 Segmentation fault (core dumped)
2025-05-04T22:45:10 Failed to build miniperl. Please run make minitest
2025-05-04T22:45:10 make[2]: *** [makefile:364: lib/buildcustomize.pl] Error 1
2025-05-04T22:45:10 make[1]: *** [package/pkg-generic.mk:231: /home/binwatson/rk3568/rk356x_linux/buildroot/output/rockchip_rk3568/build/host-perl-5.26.1/.stamp_built] Error 2
2025-05-04T22:45:10 make: *** [/home/binwatson/rk3568/rk356x_linux/buildroot/output/rockchip_rk3568/Makefile:16: _all] Error 2
Command exited with non-zero status 1
you take 49:19.11 to build builroot
ERROR: Running build_buildroot failed!
ERROR: exit code 1 from line 412:/usr/bin/time -f "you take %E to build builroot" $COMMON_DIR/mk-buildroot.sh $BOARD_CONFIG

本篇解决思路与 Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题 相同,主要思路是通过升级 perl 来解决:

  • perl-cross-.6.2:https://github.com/arsv/perl-cross/releases/tag/1.6.2
  • perl-5.40.0:https://www.cpan.org/src/5.0/

修改 buildroot/package/perl 下面两个文件 perl.mkperl.hash

################################################################################
#
# perl
#
################################################################################# When updating the version here, also update utils/scancpan
# 修改 PERL_VERSION_MAJOR = 40 为 40 版本
PERL_VERSION_MAJOR = 40
# 修改 PERL_VERSION_MAJOR = 5.x.0 为 5.x.0 这里的 x 是上面的 40
PERL_VERSION = 5.$(PERL_VERSION_MAJOR).0
PERL_SITE = http://www.cpan.org/src/5.0
PERL_SOURCE = perl-$(PERL_VERSION).tar.xz
PERL_LICENSE = Artistic or GPL-1.0+
PERL_LICENSE_FILES = Artistic Copying README
PERL_INSTALL_STAGING = YES# 配置 perl-cross 的版本为 1.6.2
PERL_CROSS_VERSION = 1.6.2
# DO NOT refactor with the github helper (the result is not the same)
PERL_CROSS_SITE = https://github.com/arsv/perl-cross/releases/download/$(PERL_CROSS_VERSION)
PERL_CROSS_SOURCE = perl-cross-$(PERL_CROSS_VERSION).tar.gz
PERL_EXTRA_DOWNLOADS = $(PERL_CROSS_SITE)/$(PERL_CROSS_SOURCE)# We use the perlcross hack to cross-compile perl. It should
# be extracted over the perl sources, so we don't define that
# as a separate package. Instead, it is downloaded and extracted
# together with perl
define PERL_CROSS_EXTRACT$(call suitable-extractor,$(PERL_CROSS_SOURCE)) $(DL_DIR)/$(PERL_CROSS_SOURCE) | \$(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) -
endef
PERL_POST_EXTRACT_HOOKS += PERL_CROSS_EXTRACT# Even though perl is not an autotools-package, it uses config.sub and
# config.guess. Up-to-date versions of these files may be needed to build perl
# on newer host architectures, so we borrow the hook which updates them from the
# autotools infrastructure.
PERL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOKifeq ($(BR2_PACKAGE_BERKELEYDB),y)
PERL_DEPENDENCIES += berkeleydb
endif
ifeq ($(BR2_PACKAGE_GDBM),y)
PERL_DEPENDENCIES += gdbm
endif# We have to override LD, because an external multilib toolchain ld is not
# wrapped to provide the required sysroot options.
PERL_CONF_OPTS = \--target=$(GNU_TARGET_NAME) \--target-tools-prefix=$(TARGET_CROSS) \--prefix=/usr \-Dld="$(TARGET_CC)" \-Dccflags="$(TARGET_CFLAGS)" \-Dldflags="$(TARGET_LDFLAGS) -lm" \-Dmydomain="" \-Dmyhostname="noname" \-Dmyuname="Buildroot $(BR2_VERSION_FULL)" \-Dosname=linux \-Dosvers=$(LINUX_VERSION) \-Dperladmin=rootifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)
PERL_CONF_OPTS += -Dusedevel
endififeq ($(BR2_STATIC_LIBS),y)
PERL_CONF_OPTS += --all-static --no-dynaloader
endifPERL_MODULES = $(call qstrip,$(BR2_PACKAGE_PERL_MODULES))
ifneq ($(PERL_MODULES),)
PERL_CONF_OPTS += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES))
endifdefine PERL_CONFIGURE_CMDS(cd $(@D); $(TARGET_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \./configure $(PERL_CONF_OPTS))$(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
endefdefine PERL_BUILD_CMDS$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all
endefdefine PERL_INSTALL_STAGING_CMDS$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(STAGING_DIR)" install.perl install.sym
endefdefine PERL_INSTALL_TARGET_CMDS$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(TARGET_DIR)" install.perl install.sym
endefHOST_PERL_CONF_OPTS = \-des \-Dprefix="$(HOST_DIR)" \-Dcc="$(HOSTCC)"define HOST_PERL_CONFIGURE_CMDS(cd $(@D); $(HOST_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \./Configure $(HOST_PERL_CONF_OPTS))
endefdefine HOST_PERL_BUILD_CMDS$(HOST_MAKE_ENV) $(MAKE) -C $(@D)
endefdefine HOST_PERL_INSTALL_CMDS$(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install
endef$(eval $(generic-package))
$(eval $(host-generic-package))define PERL_FINALIZE_TARGETrm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/podrm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/$(PERL_ARCHNAME)/COREfind $(TARGET_DIR)/usr/lib/perl5/ -name 'extralibs.ld' -print0 | xargs -0 rm -ffind $(TARGET_DIR)/usr/lib/perl5/ -name '*.bs' -print0 | xargs -0 rm -ffind $(TARGET_DIR)/usr/lib/perl5/ -name '.packlist' -print0 | xargs -0 rm -f
endef
PERL_TARGET_FINALIZE_HOOKS += PERL_FINALIZE_TARGET

更新 perl.hash 文件里面压缩包的哈希值:

# Hashes from: http://www.cpan.org/src/5.0/perl-5.26.1.tar.xz.{md5,sha1,sha256}.txt
# md5    70e988b4318739b0cf3ad5e120bfde88                                 perl-5.26.1.tar.xz
# sha1   403bb1804cb41416153d908eea093f2be22a77f6                         perl-5.26.1.tar.xz
# sha256 fe8208133e73e47afc3251c08d2c21c5a60160165a8ab8b669c43a420e4ec680 perl-5.26.1.tar.xzmd5    cfe14ef0709b9687f9c514042e8e1e82                                 perl-5.40.0.tar.xz
sha1   4a3af1f62afc611aa1552adc6c7ec389e9723bce                         perl-5.40.0.tar.xz
sha256 c740348f357396327a9795d3e8323bafd0fe8a5c7835fc1cbaba0cc8dfe7161f perl-5.40.0.tar.xz# Hashes from: http://github.com/arsv/perl-cross/releases/download/1.1.8/perl-cross-1.1.8.hash
# sha256        08e626ed9c419b8a695a8762ff8b41a553023175e4ad67b5e858fc9b4322521c  perl-cross-1.1.8.tar.gz
sha256 131f7496152ee32067dbac2bc9b44b2f582fc778140e545701b3b2faee782f1d  perl-cross-1.6.2.tar.gz
sha256 8e6beb9ca0ffbc4b9c6550d56f622ecd33d5635ee8af9a8f269fd81f40fb6801  Artistic
sha256 d77d235e41d54594865151f4751e835c5a82322b0e87ace266567c3391a4b912  Copying
sha256 0f593e7e670a85f7199c57c1f0b3c1c541d414af547fde3a5b0fd7ccc235531a  README

然后回到 SDK 目录,重新编译 buildroot 即可:

在这里插入图片描述
我实测下载很久都没下载下来,因此这里提供一种采用手动下载压缩包的方式:

  • perl 下路径,请记住选择和在 perl.mk 设置的版本相同,这里我上面设置的是 5.40.0 的版本,因此下载 5.40.0 的版本 perl 5.40.0.tar.xz ;
  • perl-cross 下载路径,这里我下载 perl-cross-1.6.2.tar.gz;

然后将下载后的两个软件包,放在 buildroot/dl 目录下:
在这里插入图片描述

然后编译即可:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/904110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 中解决中文乱码问题

在 Spring MVC 中解决中文乱码问题&#xff0c;需要从 请求参数编码 和 响应内容编码 两方面入手。以下是完整的解决方案&#xff1a; 一、解决请求参数中文乱码 1. POST 请求编码&#xff08;表单提交&#xff09; 配置 CharacterEncodingFilter 在 web.xml 中添加 Spring 提…

MYSQL数据库突然消失

之前在下载mysql时发现没有my.ini。考虑到后面的项目可能需要&#xff0c;看着教程自己创建了一次&#xff0c;当时就发生了所有数据库消失的问题&#xff0c;近几天这种事件又发生了。我在服务里看到我有mysql和mysql57两个服务&#xff0c;启动一个的时候另一个就无法启动&am…

【Spring】idea + maven 从零创建Spring IoC容器示例

【Spring】idea maven 从零创建Spring IoC容器示例 1. 环境准备2. 创建maven项目3. 添加依赖4. 创建Java类与接口4.1 定义接口UserService4.2 实现接口UserServiceImpl 5. 配置Spring IoC容器6. 编写主类调用IoC容器扩展&#xff1a;使用注解方式实现IoC1. 修改beans.xml2.使用…

面试回答之STAR结构

面试回答之STAR结构 1. STAR结构的起源 STAR是行为面试法&#xff08;Behavioral Interview&#xff09;的核心框架&#xff0c;由以下四个单词首字母组成&#xff1a; • Situation&#xff08;情境&#xff09; • Task&#xff08;任务&#xff09; • Action&#xff…

Kubernetes部署运行应用

①使用 Deployment 运行一个无状态应用 ②运行一个单实例有状态应用 ③运行一个有状态的应用程序 ④使用 Persistent Volumes 部署 WordPress 和 MySQL

二叉搜索树的最近祖先(递归遍历)

235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:TreeNode*traversal(TreeNode*cur,TreeNode*p,TreeNode*q){if(curNULL){return NULL;}if(cur->val>p->val&&cur->val>q->val){TreeNode*lefttrave…

网络:TCP三次握手、四次挥手

目录 深刻理解三次握手 深刻理解四次挥手 深刻理解三次握手 三次握手时&#xff0c;如果最后一个ACK包&#xff0c;服务器没有收到&#xff0c;此时&#xff1a; 客户端&#xff1a;认为已经建立链接 服务器&#xff1a;认为没有建立链接&#xff0c;还在超时等待。 而此…

MySQL 实战 45 讲 笔记 ----来源《极客时间》

01 | 基础架构&#xff1a;一条SQL查询语句是如何执行的&#xff1f; 1. MySQL 可以分为 Server层 和 存储引擎层 两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等。存储引擎层支持 InnoDB、MyISAM等. (1) 连接器&#xff1a;管理连接&#xff0c;权限认证…

nextjs+supabase vercel部署失败

1.不能含有<any> 改成unknown或者增加类(如图) 2.检查vecel是否配置环境变量&#xff08;即supabase的url和anon-key&#xff09;

数据库Mysql_联合查询

或许自己的不完美才是最完美的地方&#xff0c;那些让自己感到不安的瑕疵&#xff0c;最终都会变成自己的特色。 ----------陳長生. 1.介绍 1.1.为什么要进行联合查询 在数据设计的时候&#xff0c;由于范式的需求&#xff0c;会被分为多个表&#xff0c;但是当我们要查询数据…

(37)VTK C++开发示例 ---纹理地球

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;VTK开发 &#x1f448; 1. 概述 将图片纹理贴到球体上&#xff0c;实现3D地球的效果。 该代码使用了 VTK (Visualization Toolkit) 库来创建一个纹理…

VMware-centOS7安装redis分布式集群

1.部署redis包 1.1 在usr/local文件夹里创建文件夹 mkdir software 1.2 进入文件夹 cd /usr/local/software/ 下载redis wget http://download.redis.io/releases/redis-6.2.6.tar.gz解压 tar zxvf redis-6.2.6.tar.gz重命名文件夹 mv redis-6.2.6 redis安装gcc编译器 yum i…

【RocketMQ Broker 相关源码】- broker 启动源码(2)

文章目录 1. 前言2. 创建 DefaultMessageStore3. DefaultMessageStore#load3.1 CommitLog#load3.2 loadConsumeQueue 加载 ConsumeQueue 文件3.3 创建 StoreCheckpoint3.4 indexService.load 加载 IndexFile 文件3.5 recover 文件恢复3.6 延时消息服务加载 4. registerProcesso…

认识含盐褶皱和冲断带中的前造山运动蒸发岩变形

主要观察结果的示意图模型&#xff0c;并提出了三叠纪前造山蒸发岩变形的演化模型。&#xff08;a&#xff09; 蒸发岩的初始平缓隆起&#xff0c;在盐枕和盐背斜顶部有滑塌褶皱和同沉积伸展断层。&#xff08;b&#xff09; 底辟形成&#xff0c;主动刺穿和拖动折叠长底辟&…

数据库MySQL学习——day8(复习与巩固基础知识)

文章目录 1. 数据库基础概念复习2. 常用SQL命令复习2.1 SELECT 查询数据2.2 INSERT 插入数据2.3 UPDATE 更新数据2.4 DELETE 删除数据 3. 表操作复习3.1 创建表3.2 修改表3.3 删除表 4. 实践任务4.1 创建样例数据库和表4.2 插入和更新数据4.3 使用WHERE、ORDER BY、LIMIT进行查…

TS 字面量类型

str是string类型l str2是常量&#xff0c;类型是字面量类型 用途&#xff1a;配合联合类型确定更严谨精确的可选值利恩

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】1.3 客户端工具选择(psql/PGAdmin/DBeaver)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 1.3 客户端工具选择(psql/PGAdmin/DBeaver)1.3.1 工具定位与适用场景1.3.2 深度解析三大工具1.3.2.1 psql:命令行的终极掌控核心特性基础操作示例优缺点分析1.3.2.2 PGAdmin:PostgreSQL 专属管理平台…

2023年第十四届蓝桥杯省赛B组Java题解【 简洁易懂】

2023年第十四届蓝桥杯省赛B组Java 题解 比赛整体情况说明 第十四届蓝桥杯大赛省赛B组Java赛道共有10道题目&#xff0c;题型分布如下&#xff1a; 题目类型题量难度分布考察重点结果填空题53简单 2中等基础算法、数学逻辑、字符串处理编程大题52中等 3困难动态规划、图论、…

深度学习中的数据增强:提升食物图像分类模型性能的关键策略

深度学习中的数据增强&#xff1a;提升食物图像分类模型性能的关键策略 在深度学习领域&#xff0c;数据是模型训练的基石&#xff0c;数据的数量和质量直接影响着模型的性能表现。然而&#xff0c;在实际项目中&#xff0c;获取大量高质量的数据往往面临诸多困难&#xff0c;…

jakarta.mail(javax.mail)包中关于SMTP协议支持的属性参数配置

一、程序属性配置 NO.NameTypeDescription1mail.smtp.userStringSMTP的默认用户名。2mail.smtp.hostString要连接的SMTP服务器。3mail.smtp.portint如果 connect()方法未明确指定一个&#xff0c;则要连接的SMTP服务器端口。默认为25。4mail.smtp.connectiontimeoutint套接字连…