目前,我们正在为我们在 AM1808 处理器上运行的硬件开发 QT。
目前,我们使用 QT creator 和编译器版本 Qt 4.8.7 开发我们的应用程序。
我们计划用 Qt 5.7 升级它,为此,我们从
我们成功下载了这个,现在需要根据我们当前的arm工具链进行配置。
我们已按以下方式修改了 qmake.conf,
#
# 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 -confirm-license -prefix /usr/local/Qt5 -no-pch -xplatform linux-arm-gnueabi-g++
但是我们发现了以下错误,
系统架构:'arm' 主机架构:'i386' arm-none-linux-gnueabi-g++ -c -fvisibility=hidden fvisibility.c 符号可见性控制已启用。
cc1plus:错误:无法识别的命令行选项'-fuse-ld=gold' arm-none-linux-gnueabi-g++ -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c bsymbolic_functions.c:2: 2:错误:#error“此架构上的符号函数绑定可能被破坏,禁用它(参见 QTBUG-36129)。”
符号函数绑定已禁用。检查 C++14...
arm-none-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 位 std::atomic... 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::atomic 已禁用。
检查 -latomic 中的 64 位 std::atomic... 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
-latomic 中的 64 位 std::atomic 已禁用。
检查 std::atomic 的函数指针... 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::atomic 禁用函数指针。
错误:检测到函数指针失败的 std::atomic 实现。
请应用与您的标准库供应商对应的补丁,该补丁位于 /opt/qt-everywhere-opensource-src-5.7.1/qtbase/config.tests/common/atomicfptr
所以,请建议我们正确的方法来编译这个 qt5 版本。