<環境>
- Windows10 64bit
- gcc(Mingw)
- https://qiita.com/Syo_pr/items/cca512d1043f33a3da2cこちらのサイトを参考にしました。
こちらのプログラムをコンパイルしたところ以下のエラーが出ました。
#include<stdio.h> #include<omp.h> #define N 1000 void add(int *a, int *b, int *c, int min, int max); void mul(int *a, int *b, int *d, int min, int max); void add_add(int *a, int *b, int *e, int min, int max); void mul_mul(int *a, int *b, int *f, int min, int max); int main(){ int a[N]; int b[N]; int c[N]; int d[N]; int e[N]; int f[N]; int i; #pragma omp parallel for for(i=0; i < N; i++){ a[i] = i; b[i] = 1; } #pragma omp parallel { int thread_id = omp_get_thread_num(); int num = N/4; int thread_part = num * thread_id; add(a,b,c,thread_part,thread_part + num); mul(a,b,d,thread_part,thread_part + num); add_add(a,b,e,thread_part,thread_part + num); mul_mul(a,b,f,thread_part,thread_part + num); } for(i=0; i < N; i++){ printf("c : %d\n",c[i]); printf("d : %d\n",d[i]); printf("e : %d\n",e[i]); printf("f : %d\n",f[i]); } return 0; }
こちらがエラーです。
C:\Users\Daito\AppData\Local\Temp\cc8XCf4f.o:Workload_Improvement.c:(.text+0x61): undefined reference to `omp_get_thread_num' C:\Users\Daito\AppData\Local\Temp\cc8XCf4f.o:Workload_Improvement.c:(.text+0xcd): undefined reference to `add' C:\Users\Daito\AppData\Local\Temp\cc8XCf4f.o:Workload_Improvement.c:(.text+0x111): undefined reference to `mul' C:\Users\Daito\AppData\Local\Temp\cc8XCf4f.o:Workload_Improvement.c:(.text+0x155): undefined reference to `add_add' C:\Users\Daito\AppData\Local\Temp\cc8XCf4f.o:Workload_Improvement.c:(.text+0x196): undefined reference to `mul_mul' collect2.exe: error: ld returned 1 exit status
プログラムを見る限りomp_get_thread_numが必要ないと思い消しました。
そして試しにint thread_id = 0と置きました。
再びコンパイルしたところ以下のエラーが出ました。
C:\Users\Daito\AppData\Local\Temp\cccJAFkb.o:Workload_Improvement.c:(.text+0xcc): undefined reference to `add' C:\Users\Daito\AppData\Local\Temp\cccJAFkb.o:Workload_Improvement.c:(.text+0x110): undefined reference to `mul' C:\Users\Daito\AppData\Local\Temp\cccJAFkb.o:Workload_Improvement.c:(.text+0x154): undefined reference to `add_add' C:\Users\Daito\AppData\Local\Temp\cccJAFkb.o:Workload_Improvement.c:(.text+0x195): undefined reference to `mul_mul' collect2.exe: error: ld returned 1 exit status
関数の定義がされていないとエラーが出ているのですが、
void add(int *a, int *b, int *c, int min, int max); void mul(int *a, int *b, int *d, int min, int max); void add_add(int *a, int *b, int *e, int min, int max); void mul_mul(int *a, int *b, int *f, int min, int max);
こちらが変数add、mul、add_add、mul_mulを定義している部分なのではないのでしょうか?
どうかエラーを解決するためにお力を貸していただけないでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/15 11:26 編集
2018/05/16 12:09