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

news2025/5/10 23:51:40

本文提供一种修复 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_HOOK

ifeq ($(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=root

ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)
PERL_CONF_OPTS += -Dusedevel
endif

ifeq ($(BR2_STATIC_LIBS),y)
PERL_CONF_OPTS += --all-static --no-dynaloader
endif

PERL_MODULES = $(call qstrip,$(BR2_PACKAGE_PERL_MODULES))
ifneq ($(PERL_MODULES),)
PERL_CONF_OPTS += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES))
endif

define 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
endef

define PERL_BUILD_CMDS
        $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all
endef

define PERL_INSTALL_STAGING_CMDS
        $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(STAGING_DIR)" install.perl install.sym
endef

define PERL_INSTALL_TARGET_CMDS
        $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(TARGET_DIR)" install.perl install.sym
endef

HOST_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))
endef

define HOST_PERL_BUILD_CMDS
        $(HOST_MAKE_ENV) $(MAKE) -C $(@D)
endef

define HOST_PERL_INSTALL_CMDS
        $(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install
endef

$(eval $(generic-package))
$(eval $(host-generic-package))

define PERL_FINALIZE_TARGET
        rm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/pod
        rm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE
        find $(TARGET_DIR)/usr/lib/perl5/ -name 'extralibs.ld' -print0 | xargs -0 rm -f
        find $(TARGET_DIR)/usr/lib/perl5/ -name '*.bs' -print0 | xargs -0 rm -f
        find $(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.xz

md5    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.coloradmin.cn/o/2372714.html

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

相关文章

强化学习PPO算法学习记录

1. 四个模型&#xff1a; Policy Model&#xff1a;我们想要训练的目标语言模型。我们一般用SFT阶段产出的SFT模型来对它做初始化。Reference Model&#xff1a;一般也用SFT阶段得到的SFT模型做初始化&#xff0c;在训练过程中&#xff0c;它的参数是冻结的。Ref模型的主要作用…

从零开始:用PyTorch构建CIFAR-10图像分类模型达到接近1的准确率

为了增强代码可读性&#xff0c;代码均使用Chatgpt给每一行代码都加入了注释&#xff0c;方便大家在本文代码的基础上进行改进优化。 本文是搭建了一个稍微优化了一下的模型&#xff0c;训练200个epoch&#xff0c;准确率达到了99.74%&#xff0c;简单完成了一下CIFAR-10数据集…

初学Python爬虫

文章目录 前言一、 爬虫的初识1.1 什么是爬虫1.2 爬虫的核心1.3 爬虫的用途1.4 爬虫分类1.5 爬虫带来的风险1.6. 反爬手段1.7 爬虫网络请求1.8 爬虫基本流程 二、urllib库初识2.1 http和https协议2.2 编码解码的使用2.3 urllib的基本使用2.4 一个类型六个方法2.5 下载网页数据2…

【办公类-99-05】20250508 D刊物JPG合并PDF便于打印

背景需求 委员让我打印2024年2025年4月的D刊杂志&#xff0c;A4彩打&#xff0c;单面。 有很多JPG&#xff0c;一个个JPG图片打开&#xff0c;实在太麻烦了。 我需要把多个jpg图片合并成成为一个PDF&#xff0c;按顺序排列打印。 deepseek写Python代码 代码展示 D刊jpg图片合…

相机的方向和位置

如何更好的控制相机按照我们需要来更好的观察我们需要的地貌呢? 使用 // setview瞬间到达指定位置,视角//生成position是天安门的位置var position Cesium.Cartesian3.fromDegrees(116.397428,39.90923,100)viewer.camera.setView({//指定相机位置destination: position, 在…

suna界面实现原理分析(二):浏览器工具调用可视化

这是一个基于React的浏览器操作可视化调试组件&#xff0c;主要用于在AI开发工具中展示网页自动化操作过程&#xff08;如导航、点击、表单填写等&#xff09;的执行状态和结果。以下是关键技术组件和功能亮点的解析&#xff1a; 一、核心功能模块 浏览器操作状态可视化 • 实时…

操作系统面试问题(4)

32.什么是操作系统 操作系统是一种管理硬件和软件的应用程序。也是运行在计算机中最重要的软件。它为硬件和软件提供了一种中间层&#xff0c;让我们无需关注硬件的实现&#xff0c;把心思花在软件应用上。 通常情况下&#xff0c;计算机上会运行着许多应用程序&#xff0c;它…

C++ Dll创建与调用 查看dll函数 MFC 单对话框应用程序(EXE 工程)改为 DLL 工程

C Dll创建 一、添加 DllMain&#xff08;必要&#xff09; #include <fstream>void Log(const char* msg) {std::ofstream f("C:\\temp\\dll_log.txt", std::ios::app);f << msg << std::endl; }BOOL APIENTRY DllMain(HMODULE hModule, DWORD u…

【prometheus+Grafana篇】基于Prometheus+Grafana实现Linux操作系统的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…

CurrentHashMap的整体系统介绍及Java内存模型(JVM)介绍

当我们提到ConurrentHashMap时&#xff0c;先想到的就是HashMap不是线程安全的&#xff1a; 在多个线程共同操作HashMap时&#xff0c;会出现一个数据不一致的问题。 ConcurrentHashMap是HashMap的线程安全版本。 它通过在相应的方法上加锁&#xff0c;来保证多线程情况下的…

spring ai alibaba 使用 SystemPromptTemplate 很方便的集成 系统提示词

系统提示词可以是.st 文件了&#xff0c;便于修改和维护 1提示词内容&#xff1a; 你是一个有用的AI助手。 你是一个帮助人们查找信息的人工智能助手。 您的名字是{name} 你应该用你的名字和{voice}的风格回复用户的请求。 每一次回答的时候都要增加一个65字以内的标题形如:【…

网络的搭建

1、rpm rpm -ivh 2、yum仓库&#xff08;rpm包&#xff09;&#xff1a;网络源 ----》网站 本地源 ----》/dev/sr0 光盘映像文件 3、源码安装 源码安装&#xff08;编译&#xff09; 1、获取源码 2、检测环境生成Ma…

C++学习之类和对象_1

1. 面向过程与面向对象 C语言是面向过程的&#xff0c;注重过程&#xff0c;通过调用函数解决问题。 比如做番茄炒蛋&#xff1a;买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的&#xff…

YOLOv12云端GPU谷歌免费版训练模型

1.效果 2.打开 https://colab.research.google.com/?utm_sourcescs-index 3.上传代码 4.解压 !unzip /content/yolov12-main.zip -d /content/yolov12-main 5.进入yolov12-main目录 %cd /content/yolov12-main/yolov12-main 6.安装依赖库 !pip install -r requirements.…

OpenCV进阶操作:图像直方图、直方图均衡化

文章目录 一、图像直方图二、图像直方图的作用三、使用matplotlib方法绘制直方图2.使用opencv的方法绘制直方图&#xff08;划分16个小的子亮度区间&#xff09;3、绘制彩色图像的直方图 四、直方图均衡化1、绘制原图的直方图2、绘制经过直方图均衡化后的图片的直方图3、自适应…

基环树(模板) 2876. 有向图访问计数

对于基环树&#xff0c;我们可以通过拓扑排序去掉所有的树枝&#xff0c;只剩下环&#xff0c;题目中可能会有多个基环树 思路&#xff1a;我们先利用拓扑排序将树枝去掉&#xff0c;然后求出每个基环树&#xff0c;之后反向dfs求得所有树枝的长度即可 class Solution { publi…

【物联网】基于树莓派的物联网开发【1】——初识树莓派

使用背景 物联网开发从0到1研究&#xff0c;以树莓派为基础 场景介绍 系统学习Linux、Python、WEB全栈、各种传感器和硬件 接下来程序猫将带领大家进军物联网世界&#xff0c;从0开始入门研究树莓派。 认识树莓派 正面图示&#xff1a; 1&#xff1a;树莓派简介 树莓派…

学习Python的第一天之网络爬虫

30岁程序员学习Python的第一天&#xff1a;网络爬虫 Requests库 1、requests库安装 windows系统通过管理员打开cmd&#xff0c;运行pip install requests!测试案例&#xff1a; 2、Requests库的两个重要对象 Response对象Resoponse对象包含服务器返回的所有信息&#xff…

linux下的Redis的编译安装与配置

配合做开发经常会用到redis&#xff0c;整理下编译安装配置过程&#xff0c;仅供参考&#xff01; --------------------------------------Redis的安装与配置-------------------------------------- 下载 wget https://download.redis.io/releases/redis-6.2.6.tar.gz tar…

无人机相关技术与故障排除笔记

无人机相关技术与故障排除笔记 本文档整理了关于无人机电调、电机、通信协议、传感器以及硬件故障排除相关的笔记和解释。 1. 电调 (ESC) PWM 输出初始化设置 初始化电调&#xff08;电子调速器&#xff09;的 PWM 输出功能时&#xff0c;设置 频率 400Hz、分辨率 10000、初…