0

現在、AM1808 プロセッサで動作するハードウェア向けのアプリケーション開発のための QT に取り組んでいます。

現在、QT Creator とコンパイラ バージョン Qt 4.8.7 を使用してアプリを開発しています。

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.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++ -oatomic64.oatomic64.cpp

cc1plus: エラー: 認識されないコマンド ライン オプション '-std=gnu++11'

make: *** [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++ -oatomic64.oatomic64.cpp

cc1plus: エラー: 認識されないコマンド ライン オプション '-std=gnu++11'

make: *** [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 atomfptr.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 バージョンをコンパイルする正しい方法を提案してください。

4

1 に答える 1

0

ツールチェーンが古すぎます。Qt 5.6 は、多かれ少なかれ完全に C++ 11 に準拠したコンパイラを必要としない最後のリリースでした。これは Qt 5.7 で変更されました。

ツールチェーンを (少なくとも) 4.8 にアップグレードするか、Qt 5.6 を試してください。

于 2018-04-04T05:30:15.417 に答える