This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM1808:需要帮助、以便为我们当前的 ARM 工具链交叉编译 qt 5.9

Guru**** 2943030 points

Other Parts Discussed in Thread: AM1808

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/672006/linux-am1808-need-help-to-cross-compile-qt-5-9-for-our-current-arm-tool-chain

器件型号:AM1808

工具/软件:Linux

您好!

我有一个在 AM1808上运行的硬件、将 Linux 安装为操作系统。 在开发过程中、我使用 QT 创建  程序构建基于 GUI 的应用程序、该应用程序使用 qt 4.7.4编译器以及 ARM 工具链来构建应用程序并将其安装在此处理器上。 该处理器在使用工具链 arm2012.03和 gcc 版本4.6.3的 ARM Linux 内核2.6.37上运行

现在、我需要使用相同的工具链更新 qt 5.7或更高版本的编译器版本。 以下是我从中获取此内容的下载链接...

http://download.qt.io/official_releases/qt/5.7/5.7.1/single/qt-everywhere-opensource-src-5.7.1.tar.gz

我已成功下载它、现在需要根据当前工具链进行配置。 为此、我更新了 qmake.Cong、如下所示、

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

// modifications to g++.conf

//QMAKE_CC                = arm-linux-gnueabi-gcc

//QMAKE_CXX               = arm-linux-gnueabi-g++

//QMAKE_LINK              = arm-linux-gnueabi-g++

//QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

// modifications to linux.conf

//QMAKE_AR                = arm-linux-gnueabi-ar cqs

//QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy

//QMAKE_NM                = arm-linux-gnueabi-nm -P

//QMAKE_STRIP             = arm-linux-gnueabi-strip

QMAKE_CC                = arm-none-linux-gnueabi-gcc

QMAKE_CXX               = arm-none-linux-gnueabi-g++

QMAKE_LINK              = arm-none-linux-gnueabi-g++

QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

QMAKE_AR                = arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy

QMAKE_STRIP             = arm-none-linux-gnueabi-strip

load(qt_config)


来编译我使用的这个版本
./configure -opensource -confirme-license -prefix /usr/local/Qt5 -no-pch -xplatform linux-arm-gnueabi-g++

这取决于我们当前的工具链和可用的 gcc 版本。 我在旧的 qt 安装过程中使用的类似命令。

但我们发现了以下错误、

系统架构:"ARM"主机架构:"i386" arm-none-linux-gnueabi-g++-c -fvisibility=hidden fvisibility.c 启用符号可见性控制。

cc1plus:错误:无法识别的命令行选项'-fuser-ld=gold' arm-no-linux-gnueabi-g++-o libtest.so -shared -WL、-Bsymbolic-functions -FPIC Blsymbol_functions.c Blsymbol_functions.c:2:2:错误:#ERROR:"此体系结构上的符号函数绑定可能会中断、请参阅禁用 TBQ36129 (请参阅 TBIG-UG-UG-UG)。

禁用符号函数绑定。 正在检查 C++ 14...

arm-no-linux-gnueabi-g++-c -pipe -O2 -std=GNU+1y -Wall -W -FPIC -I. i../../../mkspecs/linux-arm-gnueabi-g ++-o c++14.o c++14.cpp

cc1plus:错误:无法识别的命令行选项'-std=GNU+1y' make:***[c++14.o]错误1.

C++14禁用。

正在检查默认 C++标准版本... arm-none-linux-gnueabi-g++-pipe -O2 -Wall -W -FPIC -I. i../../../mkspecs/linux-arm-gnueabi-g ++-o c++default.ii -E c++default.cpp

启用默认 C++标准版本。

正在检查64位标准::原子... arm-none-linux-gnueabi-g++-c -pipe -O2 -std=GNU++11 -Wall -W -FPIC -I. i../../../mkspecs/linux-arm-gnueabi-g ++-o atomic64.o atomic64.cpp

cc1plus:错误:无法识别的命令行选项'-std=GNU+11'

制造:***[atomic64.o]错误1.

64位 std::原子禁用。

正在检查64位标准::-latomic...中的原子 arm-none-linux-gnueabi-g++-c -pipe -O2 -std=GNU++11 -Wall -W -FPIC -I. i../../../mkspecs/linux-arm-gnueabi-g ++-o atomic64.o atomic64.cpp

cc1plus:错误:无法识别的命令行选项'-std=GNU+11'

制造:***[atomic64.o]错误1.

64位 std::-latomic 中的原子被禁用。

正在检查 std::函数指针的原子函数... arm-none-linux-gnueabi-g++-c -pipe -O2 -std=GNU++11 -Wall -W -FPIC -I. i../../../mkspecs/linux-arm-gnueabi-g ++-o atomicfptr.o atomicfptr.cpp cc1plus:错误:无法识别的命令行选项'-std=GNU++11'

make:***[atomicfptr .o]错误1

std::禁用函数指针的原子函数。

错误:检测到函数指针失败的 std::原子实现。

请应用与/opt/qt-everywhere-opensource-src-5.7.1/qtbase/config.tests/common/atomicfptr 中的标准库供应商相对应的补丁

那么、这就是我找到的内容。 是否有人可以建议我解决此问题的方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    收费(gcc 4.6.3版的 arm2012.03版、这种版本已经很旧了)和 QTc 5.9似乎不兼容...
    您是否尝试在此处提供 xplatform 选项作为 desxried:
    Doc.qt.io/.../configure-options.html
    wiki.qt.io/building Qt_for_Embedded_Linux

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好!

    感谢您的回复、我已经浏览过您提供的链接、但它失败了、因为您描述的工具链可能是问题所在。

    如果我想更新我的工具链、在哪里可以找到它、以及要考虑采取哪些步骤来安装此新工具链?
    此外、如果我成功安装了这个新工具链、旧工具链会发生什么情况?我需要删除旧工具链还是将其覆盖?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价]如果我想更新我的工具链、我在哪里可以找到它、以及安装此新工具链需要考虑哪些步骤?
    这是一个 linaro 工具链、因此您应该能够在此处找到它:
    www.linaro.org/.../

    [报价]如果我想更新我的工具链、我在哪里可以找到它、以及安装此新工具链需要考虑哪些步骤?
    应该有一个预编译的二进制文件、因此除了下载它之外、不应该执行任何其他步骤... 除非您希望自己编译工具链、否则需要按照 linaro wiki.linaro.org/.../FAQ 提供的说明 进行操作、并考虑使用 SoC。

    [报价]此外、如果我成功安装了这个新工具链、旧工具链会发生什么情况、我是否需要删除旧工具链或将其覆盖?[/报价]
    当您将环境变量指向新下载的工具链时、编译将采用此新的交叉编译器。 您不需要旧的。

    注意:TI 已验证内核和 u-boot 可与 arm2012.03配合使用、因此您应使用此版本构建内核和 u-boot。。 较新的版本也可能可以工作、但尚未经过测试。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、

    好的、 我将对它进行处理

    感谢您的支持。