Ultra96v2 ボードのコース「Introduction to Deep Learning with Xilinx SoCs Technical Training Course」を受講していて、Lab No. 5 に到達しました。
SDK でプロジェクトをビルドすることになるまで、私は従うことができます。失敗し、次のようなエラーが表示されます。
15:49:06 **** Incremental Build of configuration Debug for project mnist_file_io ****
make all
Building file: ../src/mnist_file_io.cc
Invoking: ARM v8 Linux g++ compiler
aarch64-linux-gnu-g++ -Wall -O0 -g3 -I/media/user/6b04b610-ff80-4702-a575-b0b1a78fbafb/training/AvnetTTC/DPU/U96AI_student_20200115/U96AI/2018_3/work/lab5/workspace/ExtraIncludes -I/usr/include -c -fmessage-length=0 -MT"src/mnist_file_io.o" --sysroot=YSROOT -MMD -MP -MF"src/mnist_file_io.d" -MT"src/mnist_file_io.o" -o "src/mnist_file_io.o" "../src/mnist_file_io.cc"
In file included from ../src/mnist_file_io.cc:9:0:
/tools/Xilinx/SDK/2018.3/gnu/aarch64/lin/aarch64-linux/aarch64-linux-gnu/include/c++/7.3.1/cmath:45:15: fatal error: math.h: No such file or directory
#include_next <math.h>
^~~~~~~~
compilation terminated.
src/subdir.mk:21: recipe for target 'src/mnist_file_io.o' failed
make: *** [src/mnist_file_io.o] Error 1
チュートリアルと私が提供したパスに含まれていますが、ヘッダーファイルは見つかりません。実際には、さらに 2 つのファイルが見つかりませんでした。
#include <opencv2/opencv.hpp>
#include <dnndk/dnndk.h>
それらが含まれていたディレクトリからそれらを手動で選択し、ザイリンクス SDK がヘッダーを検索する必要がある追加のディレクトリに追加することで、それらを含めることができました。しかし、ここで疑問が生じます: そもそもなぜ彼らは見つからないのでしょうか? 正しくインストールし、上記のチュートリアルの指示に従っていれば、ビルドするだけの準備は整っているのではないでしょうか?
実際、ザイリンクス ダウンロード サイト ( Xilinx_SDK_2018.3_1207_2324_Lin64.bin
) のインストーラーを使用すると、SDK プログラム (eclipse など) の一部のファイルが不足していたため、SDK が起動しませんでした。そのため、他のインストール (Vivado など) からこれらのファイルをコピーすると、開始されました。これも箱から出してすぐに動作するはずではありませんか?残念ながら再インストールなどはうまくいきませんでした。
したがって、ここで具体化する 1 つの質問は次のとおりだと思います。必要なすべての標準ヘッダー ファイルのディレクトリへのパスを Eclipse/Xilinx SDK に与えて、それらを検索することは可能ですか? 一部の標準ヘッダーには、ザイリンクス SDK で検出されない他のヘッダーが含まれているためです。そして、それは私の問題を解決しますか?
おかしなことに、Ctrl+クリック アクションを使用してヘッダーからヘッダーにジャンプすると、すべてのヘッダーが検出され、問題はありません。埋め込まれた追加のヘッダーが見つからなくなったのは、ビルド プロセスのみです。また、 を に変更する#include_next
と#include
、すべてが再び機能し始めます。に変更#include <header>
しても同様#include "header.h"
です。その後、動作します。しかし、エラーをスローするすべてのヘッダーを変更することは解決策にはなりません。これは、何らかの理由でこのように生成されたからです。
これは本当に煩わしく、ワークフローを混乱させます。この問題も抱えていて、私を助けてくれる人はいますか?Ubuntu 16.04と Ultra96v2 ボードを使用しています。
アップデート
私がこれまで調査してきたことは役に立たなかった:
- https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/993711/cc3235sf-why-is-ccs-eclipse-unable-to-see- c-standard-header-files
- インクルードパスが設定されていても、Eclipseはヘッダーファイルを見つけることができません
- C++ 標準ライブラリのヘッダーはどこにありますか
- https://www.eclipse.org/forums/index.php/t/1088833/
C++ gcc 標準ライブラリのパスを、Eclipse/ザイリンクス IDE がヘッダーを検索するパスとして含めましたが、ファイル内のヘッダーが見つかりません。
更新 2
ここで、問題の始まりを確認できます。すべてが自動生成されるため、特に変更されていない事前定義されたヘッダーとソースであるため、これは本当に奇妙です。
ここでは、通常の標準ヘッダーの場所をインクルード パスに含めていることがわかります。そのため、問題のファイルが見つかるはずです。