<環境>
- Windows10 64bit
- NVCC
- CUDAコンパイラ
- ダウンロードしたソースの載っているサイトです。
https://github.com/AlexeyAB/darknet
ソースコードが長かったのでこちらに載せます。
https://pastebin.com/YAktmL8P
行いたいことはpthread.hを読み込みたいのですが、エラーが出てしまいます。
まず一回目にコンパイルした際に出力されたエラーはこちらです。
C:\Users\Daito\Desktop\darknet-master\src\data.h:3:21: fatal error: pthread.h: No such file or directory #include <pthread.h> ^ compilation terminated.
こちらはdata.hのソースコードです。こちらも長かったのでこちらに載せました。
https://pastebin.com/VtYGJRy9
エラーを読むとdata.hのpthread.hが無いと出てきました。pthread.hはC:\Users\Name\Desktop\darknet-master\3rdparty\includeのincludeに入っています。
darknet.cと同じディレクトリに入れてみたのですが同じエラーが出ました。
自分なりに調べて"#include <include/pthread.h>"と改良したところ以下のエラーが出ました。
C:\Users\Daito\Desktop\darknet-master\src>gcc C:\Users\Daito\Desktop\darknet-master\src\darknet.c In file included from C:\Users\Daito\Desktop\darknet-master\src\network.h:13:0, from C:\Users\Daito\Desktop\darknet-master\src\parser.h:3, from C:\Users\Daito\Desktop\darknet-master\src\darknet.c:5: C:\Users\Daito\Desktop\darknet-master\src\data.h:3:1: error: expected identifier or '(' before string constant "#include <include/pthread.h>" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from C:\Users\Daito\Desktop\darknet-master\src\data.h:9:0, from C:\Users\Daito\Desktop\darknet-master\src\network.h:13, from C:\Users\Daito\Desktop\darknet-master\src\parser.h:3, from C:\Users\Daito\Desktop\darknet-master\src\darknet.c:5: C:\Users\Daito\Desktop\darknet-master\src\matrix.h:6:3: warning: data definition has no type or storage class } matrix; ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:6:3: warning: type defaults to 'int' in declaration of 'matrix' [-Wimplicit-int] C:\Users\Daito\Desktop\darknet-master\src\matrix.h:8:1: error: unknown type name 'matrix' matrix make_matrix(int rows, int cols); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:9:18: error: expected declaration specifiers or '...' before 'matrix' void free_matrix(matrix m); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:10:19: error: expected declaration specifiers or '...' before 'matrix' void print_matrix(matrix m); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:12:1: error: unknown type name 'matrix' matrix csv_to_matrix(char *filename); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:13:20: error: expected declaration specifiers or '...' before 'matrix' void matrix_to_csv(matrix m); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:14:1: error: unknown type name 'matrix' matrix hold_out_matrix(matrix *m, int n); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:14:24: error: expected declaration specifiers or '...' before 'matrix' matrix hold_out_matrix(matrix *m, int n); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:15:28: error: expected declaration specifiers or '...' before 'matrix' float matrix_topk_accuracy(matrix truth, matrix guess, int k); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:15:42: error: expected declaration specifiers or '...' before 'matrix' float matrix_topk_accuracy(matrix truth, matrix guess, int k); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:16:24: error: expected declaration specifiers or '...' before 'matrix' void matrix_add_matrix(matrix from, matrix to); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:16:37: error: expected declaration specifiers or '...' before 'matrix' void matrix_add_matrix(matrix from, matrix to); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:17:19: error: expected declaration specifiers or '...' before 'matrix' void scale_matrix(matrix m, float scale); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:18:1: error: unknown type name 'matrix' matrix resize_matrix(matrix m, int size); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:18:22: error: expected declaration specifiers or '...' before 'matrix' matrix resize_matrix(matrix m, int size); ^~~~~~ C:\Users\Daito\Desktop\darknet-master\src\matrix.h:20:19: error: expected declaration specifiers or '...' before 'matrix' float *pop_column(matrix *m, int c); ^~~~~~ In file included from C:\Users\Daito\Desktop\darknet-master\src\network.h:13:0, from C:\Users\Daito\Desktop\darknet-master\src\parser.h:3, from C:\Users\Daito\Desktop\darknet-master\src\darknet.c:5: C:\Users\Daito\Desktop\darknet-master\src\data.h:27:5: error: expected specifier-qualifier-list before 'matrix' matrix X; ^~~~~~ In file included from C:\Users\Daito\Desktop\darknet-master\src\network.h:13:0, from C:\Users\Daito\Desktop\darknet-master\src\parser.h:3, from C:\Users\Daito\Desktop\darknet-master\src\darknet.c:5: C:\Users\Daito\Desktop\darknet-master\src\data.h:78:1: error: unknown type name 'pthread_t' pthread_t load_data(load_args args); ^~~~~~~~~ C:\Users\Daito\Desktop\darknet-master\src\data.h:80:1: error: unknown type name 'pthread_t' pthread_t load_data_in_thread(load_args args); ^~~~~~~~~ C:\Users\Daito\Desktop\darknet-master\src\data.h:88:1: error: unknown type name 'matrix' matrix load_image_augment_paths(char **paths, int n, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure); ^~~~~~ In file included from C:\Users\Daito\Desktop\darknet-master\src\parser.h:3:0, from C:\Users\Daito\Desktop\darknet-master\src\darknet.c:5: C:\Users\Daito\Desktop\darknet-master\src\network.h:114:1: error: unknown type name 'matrix' matrix network_predict_data(network net, data test);
に書いてある
C:\Users\Daito\Desktop\darknet-master\src\data.h:3:1: error: expected identifier or '(' before string constant "#include <include/pthread.h>" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from C:\Users\Daito\Desktop\darknet-master\src\data.h:9:0, from C:\Users\Daito\Desktop\darknet-master\src\network.h:13, from C:\Users\Daito\Desktop\darknet-master\src\parser.h:3, from C:\Users\Daito\Desktop\darknet-master\src\darknet.c:5:
よりdarknet.cをインクルードできているとでたのですが、これは一回目のコンパイルエラーを解決できたのでしょうか?
data.hに書いてある
#include "matrix.h" #include "list.h" #include "image.h" #include "tree.h"
に関してはまだ指定していないのでエラーが出てしまうのは仕方ないのですが、pthread.hに関してコンパイルは成功しているのか確認していただきたいと思います。
これでうまくいっていたら他のヘッダファイルも同じ要領で書いていけば大丈夫だと思っています。
どうかよろしくお願いいたします。
編集内容
本当に申し訳ありません。GCCとCUDAのNVCCのコンパイルの形式が似ていたもので完全に勘違いしていました。コマンドプロンプトでGCCでのコンパイルではなくCUDAのNVCCでのコンパイルがうまくいかないの間違いでした。
編集した後のdata.hの内容です。
https://pastebin.com/4X9v7pgU
コマンド nvcc C:\Users\Name\Desktop\darknet-master\src\darknet.c
でコンパイルして以下のエラーが出ました。
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). darknet.c c:\users\daito\desktop\darknet-master\src\data.h(3): fatal error C1083: include ファイルを開けません。'pthread.h':No such file or directory
先ほども書いたようにpthread.hはC:\Users\Daito\Desktop\darknet-master\3rdparty\include
のincludeディレクトリに入っています。
どのディレクトリに入れれば読み込んでくれるのか、どのディレクトリに入れてもちゃんと読み込んでくれるようにする絶対パスなど読んで実装しましたがエラーが出たりで、自分もヘッダファイルの指定やディレクトリの基礎を勉強したいです。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/25 14:04
2018/03/25 14:12
2018/03/25 15:30