仮想マシン Ubuntu20.04.4 (X86_64) Qt5.14.2 構成 Jetson nano (ARM64) クロスコンパイル環境 (完了) + Dokcker イメージ (進行中)

仮想マシン 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 を実行することをお勧めします)。

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 が必要です。
    ここに画像の説明を挿入
    参考: Pythonqtqml のビルドには、ソース コードから Qt をビルドするときに Python が見つかりません。解決策は次のとおりです。

    ここに画像の説明を挿入

1.3.4 コンパイルを開始します (コンパイルする前にこのセクションをお読みください!!! 発生するエラーを事前に確認してください)

前の操作では多くのエラーがあった./autoConfigure.shため、端末は次のステートメントを直接使用してから、次のようにしましたmake

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
-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の意味は何ですか
    ?ポイント:

    1. 構成ファイルを変更しなくても、Automake ツールによってインストールされたアプリケーションは/usr/local/ディレクトリにインストールされます。
    2. usr は Unix Software Resource の略語で、ユーザー データではなく Unix オペレーティング システムのソフトウェア リソースが配置されるディレクトリです。すべてのシステムのデフォルト ソフトウェアは /usr に配置され、このディレクトリはハードディスクの大部分を占有します。システム設置時の容量
    3. /binシステムの一部の指示です。/sbin通常、スーパー ユーザー コマンドを指します。/usr/bin これは、後でインストールしたいくつかのソフトウェアの実行スクリプトです。/usr/sbindhcpd、httpd、imap、in.*d、inetd、named、netconfig、squid、swap、tcpd、tcpdump など、ユーザーがインストールしたシステム管理に必要なプログラムをいくつか配置します。
    4. 新しくインストールされたシステムで shutdown や fdisk などの通常のコマンドを実行すると、「bash:command not found 」というプロンプトが表示されます。次に、これらの環境変数がrootに含まれているかどうかを最初に検討する必要がありますPATH が$PATH正しい場合は、以下を追加する必要があります。PATH=$PATH:$HOME/binPATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
    5. usr/bin/にある aarch に関連するファイルを表示し、
      ここに画像の説明を挿入
      次にusr/にある aarch64-linux-gun フォルダーを確認します。
      ここに画像の説明を挿入
      次のようにフォルダーに入り、内容を表示します。
      ここに画像の説明を挿入

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) (公式ドキュメントの紹介を含む)」を参照してください。

穴が開いており、プロジェクトの進行に合わせて更新され続けます。

おすすめ

転載: blog.csdn.net/qq_22487889/article/details/127967511