仮想マシン x86_64 (Ubuntu 20.04) と Jetson nano ARM64 (Ubuntu 18.04) の Qt5.4.2 クロスコンパイル環境を構成します。具体的なハードウェア環境は次のとおりです。
VMware 仮想マシン (X86_64)
Jetson nano (aarch64)
プロセス主なリファレンス:
Ubuntu20.04.1 (X86_64) Qt5.14.2 構成 ARM64 クロスコンパイル環境
JetsonNano QT5.12.9 クロスコンパイルと環境構築
1. クロスコンパイル環境の構成:
1.1 仮想マシンに Qt 5.14.2 をインストールします (Qt をインストールする前にセクション 1.2 と 1.3 を実行することをお勧めします)。
- .run プログラムを直接実行すると、プログラムが
自動的にファイルをダウンロードします。インストール用のインターフェイスにダウンロード アドレスが表示されます。場所は次のとおりです。必要なものがわからない場合は、
自分で選択できます。
すべてのコンポーネントをインストールします。インストールが完了すると、Qt が通常どおり起動できるようになります。
インストール パスを確認します。gcc_64 のみであることがわかります。
1.2 ARM64 コンパイラをインストールし、Jetson nano クロスコンパイル環境を構築する
参考:
ubuntu16.04 クロスコンパイルツール aarch64-linux-gnu-gcc/g++ のインストール
NVIDIA Jetson NX クロスコンパイル環境 Ubuntu18.04
- まず Jetson nano のシステムバージョンとエディターバージョンを確認します: gcc / g++ --version または gcc / g++ -v で、
ubuntu 18.04 と aarch64-linux-gnu であることがわかります。クロスオーバーが成功していること
が確認されています。Ubuntu18.04および20.04コンパイラ環境で構築
1.2.1 Ubuntu に aarch64 バージョンの gcc と g++ をインストールする
gcc はGCCのGUN C コンパイラー ( C コンパイラー)です。 g++ はGCCのGUN C++ コンパイラー ( C++ コンパイラー)です
。 リファレンス: Ubuntu クロスコンパイル aarch64 バージョン qt
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
インストールは次のとおりです。
インストールが完了したらバージョンを確認します。
aarch64-linux-gnu-gcc -v
aarch64 +TAB を入力して、構成が成功したかどうかを確認することもできます。
1.2.2 Ubuntu での aarch64 バージョン gcc と g++ のクロスコンパイル テスト
簡単なデモ テストを作成する
- 仮想マシン内:
/*
* test.cpp
* for cplusplus
* test aarch64-linux-gnu-g++
*/
# include<iostream>
int main(int argc,char **argv)
{
std::cout << "hello world!" <<std::endl;
return 0;
}
仮想マシンでコンパイルします。
aarch64-linux-gnu-g++ test.cpp -o test
当然ながら、ここでは実行できず、生成された実行可能ファイルを組み込みボードに配置して実行します。権限が十分でない場合は、忘れずに権限を追加してください。
- Jetson nano 開発ボードでの
クロスコンパイル環境の構成は成功しました。!!、次のようにファイルの種類を表示できます。これは ARM 実行可能ファイルです。
1.3 Qt ソース コードをコンパイルします (対応する arm64 プラットフォーム ツール チェーンをコンパイルします)。
解決策: Jetson nano はリソースが少ないため、自分の PC で ARM64 コンパイル環境を構成し、Qt クロスコンパイル環境を構成してから、Qt を使用して作成したコードをコンパイルします。PC でコンパイルした後、それをコピーして実行します。 ARMプラットフォーム
1.3.1 qt-everywhere-src-5.14.2.tar.xz Qt ソース コード
ソースコード圧縮ファイルのダウンロードアドレス
次に、圧縮パッケージ 1 を解凍して、フォルダー 2 を取得します。
1.3.2 コンパイル設定ファイルの変更
参考:
Ubuntu クロスコンパイル aarch64 版 qt
JetsonNano QT5.12.9 クロスコンパイルと環境構築
- ソース コードの
場所にある qmake.conf ファイルを変更します。qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf
- ファイルの内容は次のとおりです:
上の赤枠のツールは、独自のクロスコンパイル ツールと一致する必要があります。そうでない場合、コンパイルは失敗します。
次の内容を追加して変更します。 なぜこのように変更しますか?**qmake.conf**
パラメータ関数についてはQt5.12.11 クロスコンパイル +64 ビット ARM_aarch64+Allwinner H5 CortexA53を参照してください。
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
変更は次のとおりです (Jetson-nano は armv8 アーキテクチャです)。
1.3.3 コンパイルを開始します (このセクションの構成は一時的に間違っており、構成は成功しませんでした。直接 1.3.4 を参照してください)
ソース コード ディレクトリに移動しcd qt-everywhere-src-5.14.2
、ファイル autoConfigure.sh を作成してコンパイル オプションを構成します。
cd qt-everywhere-src-5.12.9/
touch autoConfigure.sh
chmod 777 autoConfigure.sh
内容は以下の通りです。
#!/bin/sh
./configure \
-prefix /home/feiyangqu/myFile/Qt/Qt5.14.2-aarch64 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-sse2 \
-no-cups \
-no-glib \
-no-dbus \
-no-opengl \
-no-xcb \
-no-separate-debug-info \
- ソース コード ディレクトリ、つまり autoConfigure.sh ファイルが配置されているディレクトリで直接実行し
./autoConfigure.sh
、発生した問題をコンパイルして解決します。 - 問題が発生しました:
PATH に 'make' または 'gmake' がないようです。
続行できません。解決策:正常に実行するには、
ビルド コンポーネントをインストールしてくださいsudo apt-get install build-essential
- その後、もう一度 make すると、エラーが発生します: プロジェクト エラー: QtQml のビルドには Python が必要です。
参考: Pythonとqtqml のビルドには、ソース コードから Qt をビルドするときに Python が見つかりません。解決策は次のとおりです。
1.3.4 コンパイルを開始します (コンパイルする前にこのセクションをお読みください!!! 発生するエラーを事前に確認してください)
前の操作では多くのエラーがあった./autoConfigure.sh
ため、端末は次のステートメントを直接使用してから、次のようにしましたmake
。
- まずライブラリをインストールします。「Linux 環境で Qt ソース コードをコンパイルする」を参照してください。
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libclang-dev
- 次に、ターミナルはソース コード フォルダーに入り、次のコマンドを実行して構成します。
./configure -prefix /home/feiyangq/myFile/Qt/Qt5.14.2-aarch64 -make libs -xplatform linux-aarch64-gnu-g++ -no-opengl -skip qtdeclarative
- ここでは主に、xplatform ターゲット プラットフォームと extprefix インストール ディレクトリに注目してください: JetsonNano QT5.12.9 クロスコンパイルと環境構築
-prefix 是QT编译后文件目录
-xplatform 是arm编译器类型,在qtbase/mkspecs目录下,根据自己交叉编译工具进行相应的替换
-no-opengl 跳过编译openGL(因为我已经安装了Qt,所以不需要界面)
-skip qtdeclarative 跳过 qtdeclarative(不跳过,编译出错,出错的原因不清楚)
如果有别的需求,可以./configure -help查看具体命令
- ターミナルに表示される情報に注意して、ライブラリを追加します (以前に追加されています。これは追加前のエラーのスクリーンショットです):
make の成功は次のとおりです:
すると直接make install
、 で指定したインストールが表示されます。以前の構成ディレクトリ内の -prefix パラメータの位置:/home/feiyangq/myFile/Qt/Qt5.14.2-aarch64
インストールは成功しました。!!
1.4 Qt 構成のクロスコンパイル環境
1.4.1 Qt を開き、ARM64 コンパイラを手動で追加します
qt Creator にコンパイルしてインストールしたばかりの arm バージョン qt を追加します。詳細な手順については、次を参照してください: Ubuntu20.04.1 (X86_64) Qt5.14.2 ARM64 クロスコンパイル環境の構成
ただし、コンパイラー部分を開くと、Auto で arm64 コンパイルがすでに表示されています。 -検出されたデバイス。最初にソース コードをコンパイルしてから、実行ファイルで Qt をインストールしたためかもしれません。
GCC の C/C++ コンパイラを追加しaarch64-linux-gnu-gcc / g++
、奇妙なことに aarch64-linux-gnu-cpp をチェックしました。cpp は C プリプロセッサ (プリプロセッサ) です。
usr/
コンパイラの場所を確認し、ディレクトリを調べてください:
usr ディレクトリについて調べてください: Linux システムの /usr ディレクトリ
にある usrの意味は何ですか
?ポイント:
- 構成ファイルを変更しなくても、Automake ツールによってインストールされたアプリケーションは
/usr/local/
ディレクトリにインストールされます。 - usr は Unix Software Resource の略語で、ユーザー データではなく Unix オペレーティング システムのソフトウェア リソースが配置されるディレクトリです。すべてのシステムのデフォルト ソフトウェアは /usr に配置され、このディレクトリはハードディスクの大部分を占有します。システム設置時の容量
/bin
システムの一部の指示です。/sbin
通常、スーパー ユーザー コマンドを指します。/usr/bin
これは、後でインストールしたいくつかのソフトウェアの実行スクリプトです。/usr/sbin
dhcpd、httpd、imap、in.*d、inetd、named、netconfig、squid、swap、tcpd、tcpdump など、ユーザーがインストールしたシステム管理に必要なプログラムをいくつか配置します。- 新しくインストールされたシステムで shutdown や fdisk などの通常のコマンドを実行すると、「bash:command not found 」というプロンプトが表示されます。次に、これらの環境変数がrootに含まれているかどうかを最初に検討する必要があります。PATH が
$PATH
正しい場合は、以下を追加する必要があります。PATH=$PATH:$HOME/bin
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
- usr/bin/にある aarch に関連するファイルを表示し、
次にusr/にある aarch64-linux-gun フォルダーを確認します。
次のようにフォルダーに入り、内容を表示します。
- 構成ファイルを変更しなくても、Automake ツールによってインストールされたアプリケーションは
1.4.2 QT バージョンの追加
[QT バージョン] で、ソース コードをコンパイルして取得したQtのクロスコンパイルされたバージョンを の前に追加します。
1.4.2 ビルドキット(Kits)の追加
1.5 新しいプロジェクトを作成してコンパイルし、成功するかどうかをテストします
1.5.1 新規プロジェクトとコンパイル
- 新しいプロジェクトを作成し、キットが選択されているときに aarch64 キットを選択します。
build プロジェクトをビルドします。取得されたプロジェクト フォルダーは次のとおりです。
- ファイルのプロパティを表示: 検証は成功しました! !!
1.5.2 テストのためにファイルを Jetson nano 開発ボードに転送する
Qt のインストールと Jetson nano のテスト: 継続します。。。。
2. Dockerでクロスコンパイル環境を構成する
2.1Dockerのインストール
続きは「Docker のインストール (Ubuntu 20.04 LTS) (公式ドキュメントの紹介を含む)」を参照してください。
。。。。
穴が開いており、プロジェクトの進行に合わせて更新され続けます。