今日コマンドラインで使用したところnvcc
、エラーが発生しました“helper_cuda.h”: No such file or directory
。このエラー メッセージは次のことを意味します: コンパイル中にhelper_cuda.h
ヘッダー ファイルが見つかりません (xxx.h
他のファイルが見つからない場合は、次の説明と解決策も一般的です)。
この問題の原因は、ほとんどのコンパイラが 1 つの方法でヘッダー ファイルを検索するためです。環境変数に設定されたディレクトリでヘッダー ファイルを検索します。環境変数に格納されているディレクトリに該当するヘッダファイルが存在しない場合は見つかりません。この環境変数は作成も設定もされておらず、ましてやそれを見つけることは不可能です。この種の問題は、使用するコンパイラに関係なく、一般的な問題の 1 つです。
nvcc
後者です。ドキュメントやヘルプ ファイルには環境変数に関する情報が見つからず、ヘッダー ファイルを.cu
ソース コード ファイルのディレクトリにコピーしても機能しませんでした (ただし、.hpp
機能するようです)。正式な意味は、コンパイル コマンドにオプションを追加し、ヘッダー ファイルを指定または検索するためのパラメーターとしてパスを使用することです。個人的には、環境変数を混乱させず、混乱を引き起こすことなくコンパイル設定を簡単にカスタマイズできるため、この方法は小規模なプログラムや短期プロジェクトにはるかに適しています。ただし、長期的なプロジェクトは少し面倒ですが、解決策はあります。重要なのは、コンパイルされた検索オプションのパラメーターとして環境変数を自分で設定することです。この環境変数を毎回変更することもできます。
解決策は、コンパイラにこれらのヘッダー ファイルを検索させることです。ここではマシン上にヘッダー ファイルがあることを前提としていますが、マシン上にそのようなヘッダー ファイルがない場合は、コード ソースにアクセスしてヘッダー ファイルを見つけ、作成者に問い合わせてください。
nvcc
ヘッダー ファイルは通常、 (小文字の可能性があります)Common
という名前のフォルダーに配置されます。common
次のように、このフォルダーはストレージ ライブラリ ファイルです。
これらが探しているヘッダー ファイルであることがわかり、nvcc
それらを見つけることができます。上で述べたように、ヘッダー ファイルを指定するか、特定のディレクトリを検索するには、次のように をnvcc
使用する必要があります。-I 参数
# 在指定目录下查找头文件等库文件,下面的
nvcc.exe -I 目录 源代码文件路径
たとえば、上の図では、ディレクトリはE:\testcuda\cuda-samples-master\Common\
、ソース コード ファイルのパスは.\bandwidthTest.cu
、コマンドは次のとおりです。
nvcc.exe -I E:\testcuda\cuda-samples-master\Common\ .\bandwidthTest.cu
これは正常にコンパイルされます。困っている方のお役に立てれば幸いです~