【问题标题】:QtWebengine build error with opus and silk codecsQtWebengine 使用 opus 和 Silk 编解码器构建错误
【发布时间】:2017-11-07 19:47:15
【问题描述】:

我正在尝试使用 QtWebengine 为 arm 平台构建 Qt5.9.1。 这些是我传递给构建的一些基于架构的参数。

QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 
QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9

默认情况下,我可以看到构建也适用于这些值。

-mfloat-abi=hard -mtune=generic-armv7-a -mfpu=vfpv3-d16 -mthumb

THIS 是我面临的错误。

据我所知,在 cortex-a9 中,neon 是可选的,而我的特定 SoC 不支持 neon。 -print-multi-lib 也给出了这个 arm400-linux-g++ -print-multi-lib

armv5te_arm9;@mcpu=arm926ej-s
a9;@mcpu=cortex-a9
a7;@mcpu=cortex-a7
armv5te_arm9_soft;@mcpu=arm926ej-s@mfloat-abi=soft
armv5te_arm9_vfp;@mcpu=arm926ej-s@mfloat-abi=softfp@mfpu=vfp
a9_soft;@mcpu=cortex-a9@mfloat-abi=soft
a9_softfp_vfp;@mcpu=cortex-a9@mfloat-abi=softfp@mfpu=vfp
a9_softfp_vfpv3-d16;@mcpu=cortex-a9@mfloat-abi=softfp@mfpu=vfpv3-d16
a7_soft;@mcpu=cortex-a7@mfloat-abi=soft
a7_softfp_vfpv4;@mcpu=cortex-a7@mfloat-abi=softfp@mfpu=vfpv4
a7_softfp_neon-vfpv4;@mcpu=cortex-a7@mfloat-abi=softfp@mfpu=neon-vfpv4
a7_hard_neon-vfpv4;@mcpu=cortex-a7@mfloat-abi=hard@mfpu=neon-vfpv4

我已经尝试在 mkspecs 中传递这三个可能的架构参数。

QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=soft
QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=soft 

为此我得到了

"arm400-linux-g++: error: -mfloat-abi=soft and -mfloat-abi=hard may not be used together".

我也尝试过传递这些参数

-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfp

-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3-d16

但效果是一样的。

libxxxx.a(yyyyy.o) uses VFP register arguments, libQt5WebEngineCore.so.5.9.1 does not

我在这里没有选择。为什么会出现这个问题?

【问题讨论】:

    标签: makefile neon opus qt5.9


    【解决方案1】:

    您必须使用与源代码相同的 VFP 选项来构建所有库。

    根据ATPCS(ARM-Thumb 过程调用标准),如果可用,浮点参数由 VFP 寄存器传递。否则,它们由 ARM 整数寄存器传递。

    如果 lib A 使用 soft-float 选项编译,由于与 lib B 的 ABI 冲突,您无法调用其函数,反之亦然。

    如果您没有特定 lib 的源代码而是二进制文件,则唯一的选择是将其他项目的构建选项与该 lib 匹配。

    但是,您很有可能会找到具有各种构建选项的不同版本的库。

    【讨论】:

    • 但就我而言,我试图通过传递-mfloat-abi=softfp 来强制它构建以使用softfp。仍然在错误中,它是-mfloat-abi=hard。我无法真正理解 ninja build 是如何修复这些值的。 lib A 和 lib B 都来自一个构建。
    • @Kar 项目中有汇编文件吗?在汇编中,您可以使用指令.fpu 覆盖标头中的全局构建选项。此外,如果您的 SoC 具有 VFP,您应该使用它,因为它会在性能上产生巨大的差异。
    • 我发现了一个FILE,我相信它正在为 qtwebengine 中的 GN 构建修复这些参数。但我不确定在文件中进行更改的语法。这是一个.pri 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2019-11-17
    • 2013-12-31
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多