Qt6交叉编译STM32MP157遇SDK Perl缺失English.pm,如何使用宿主Perl?
解决STM32MP157构建Qt6时调用SDK缺省Perl的问题
该错误的根因为STM32 SDK内置的Perl运行环境缺失English.pm基础模块,优先通过指定CMake的Perl路径参数解决,具体操作步骤如下:
方案1:CMake显式指定宿主Perl路径(推荐)
这是对构建流程影响最小的方案,不会干扰SDK其他工具的正常调用:
- 先查询宿主系统Perl的实际路径
which perl
正常返回结果为/usr/bin/perl
2. 执行Qt6 CMake配置时追加PERL_EXECUTABLE参数,示例:
cmake .. \ -DCMAKE_TOOLCHAIN_FILE=<你的STM32MP1工具链cmake文件路径> \ -DPERL_EXECUTABLE=/usr/bin/perl \ <你原来的其他CMake配置参数>
配置完成后正常执行构建流程即可。
方案2:临时调整PATH优先级(备选)
如果方案1不生效,可以在source完SDK环境脚本后,临时修改PATH变量将系统可执行文件路径放在最前面,覆盖SDK的Perl调用:
# source SDK环境后执行 export PATH=/usr/bin:$PATH # 再执行cmake配置和构建流程
注意:该方案可能会优先调用系统内与SDK重名的其他工具,可能引发未知构建异常,仅作为临时备选方案。
前置校验(可选)
如果宿主系统Perl也提示缺失English.pm,执行以下命令安装Ubuntu默认Perl模块集即可:
sudo apt install perl-modules-$(perl -v | grep -oP 'v\K\d+\.\d+')
额外提示(可选)
报错中的locale警告不影响构建结果,如果要消除警告,执行构建前设置以下环境变量即可:
export LC_ALL=C.UTF-8
内容的提问来源于stack exchange,提问作者Daniyal Yasin
相关产品推荐
相关产品推荐

