You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM平台构建Qt 6.2.9 WebEngine子模块报错求助

解决ARM Neoverse-N1平台构建Qt 6.2.9时的xpaclri指令错误

问题重现

构建Qt 6.2.9时触发如下编译错误:

{standard input}:2829: Error: selected processor does not support `xpaclri'
[325/15536] ACTION //components/resources:about_credits(qt-everywhere-src-6.2.9/build2/qtwebengine/src/core/target_toolchain:target)
ninja: build stopped: subcommand failed.

环境信息:

  • gcc: 10.3.0
  • OS: RHEL8.10
  • 架构: aarch64
  • 内核版本: 4.18.0-553.16.1.el8_10
  • 处理器: Neoverse-N1

已尝试设置环境变量但无效:

export CFLAGS="-march=armv8.2-a -mbranch-protection=none"
export CXXFLAGS="-march=armv8.2-a -mbranch-protection=none"

跳过qtwebengine(-skip qtwebengine)时构建正常。

问题原因

xpaclri是ARMv8.3-A架构引入的指令,而Neoverse-N1仅支持ARMv8.2-A,因此编译器生成该指令会触发错误。问题根源在于QtWebEngine的构建系统(基于Chromium的GN工具)未正确继承全局CFLAGS/CXXFLAGS,而是硬编码了更高版本的ARM架构参数。

修复方法

方法1:通过configure传递GN参数

在Qt的configure命令中添加-webengine-args参数,强制指定ARM架构版本:

./configure \
  # 保留你原有的其他configure参数 \
  -webengine-args="target_cpu=\"arm64\" arm_arch=\"armv8.2-a\" arm_branch_protection=\"none\""

或者在configure前设置GN_ARGS环境变量:

export GN_ARGS="target_cpu=\"arm64\" arm_arch=\"armv8.2-a\" arm_branch_protection=\"none\""

之后重新执行configure和ninja构建。

方法2:修改QtWebEngine的GN配置文件

如果方法1无效,手动修改QtWebEngine的GN配置:

  1. 进入QtWebEngine源码目录:qt-everywhere-src-6.2.9/qtwebengine/src/core
  2. 找到工具链配置文件(如toolchain/BUILD.gn或build/config/arm.gni)
  3. 找到设置arm_arch的位置,将其值从armv8.3-a或更高改为armv8.2-a
  4. 确保arm_branch_protection被设置为none

方法3:验证编译参数传递

运行configure时添加-v参数,查看QtWebEngine相关编译命令是否包含-march=armv8.2-a -mbranch-protection=none,确认参数是否被正确传递。

内容的提问来源于stack exchange,提问作者niraj pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:27:35