何も考えないで、makeしてみた。
$ svn co http://word2vec.googlecode.com/svn/trunk ./word2vec
$ cd word2vec
$ make
gcc word2vec.c -o word2vec -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
gcc word2phrase.c -o word2phrase -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
gcc distance.c -o distance -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
distance.c:18:10: fatal error: 'malloc.h' file not found
#include <malloc.h>
^
1 error generated.
make: *** [distance] Error 1malloc.hがないと言ってる
Leopardくらいから
malloc.hはmalloc/malloc.hにあるらしく(2014/5/6 変更)
Macではmalloc.hではなく、stdlib.hを使うようです。
なので、malloc.hのところを全てstdlib.hにすれば完了です。
これ以降は情報が古いので、参考になりません。
// #include <malloc.h> #include <malloc/malloc.h>
書き換える。
そしてまたmake
distance.c:46:19: warning: implicitly declaring library function 'malloc' with type 'void *(unsigned long)'
vocab = (char *)malloc((long long)words * max_w * sizeof(char));
^
distance.c:46:19: note: please include the header <stdlib.h> or explicitly provide a declaration for 'malloc'
1 warning generated.
gcc word-analogy.c -o word-analogy -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
word-analogy.c:18:10: fatal error: 'malloc.h' file not found
#include <malloc.h>
^
1 error generated.
make: *** [word-analogy] Error 1word-analogy.cもmalloc.hをmalloc/malloc.hに書き換える。
なんかこの先何個も出てくると嫌なので、#include
$ ack "#include <malloc.h>" compute-accuracy.c 19:#include <malloc.h> word-analogy.c 18:#include <malloc.h>
これだけなら手で直してもそんなに手間じゃない。
compute-accuracy.cとword-analogy.cも
#include <malloc.h>を
#include <malloc/malloc.h>
に書き換える。
$ make
gcc word2vec.c -o word2vec -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
gcc word2phrase.c -o word2phrase -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
gcc distance.c -o distance -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
distance.c:46:19: warning: implicitly declaring library function 'malloc' with type 'void *(unsigned long)'
vocab = (char *)malloc((long long)words * max_w * sizeof(char));
^
distance.c:46:19: note: please include the header <stdlib.h> or explicitly provide a declaration for 'malloc'
1 warning generated.
gcc word-analogy.c -o word-analogy -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
word-analogy.c:46:19: warning: implicitly declaring library function 'malloc' with type 'void *(unsigned long)'
vocab = (char *)malloc((long long)words * max_w * sizeof(char));
^
word-analogy.c:46:19: note: please include the header <stdlib.h> or explicitly provide a declaration for 'malloc'
1 warning generated.
gcc compute-accuracy.c -o compute-accuracy -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
chmod +x *.sh
一応出来たっぽいけど、warningがなんか気持ち悪い
distance.cとword-analogy.cでstdlib.hをincludeしてくれ的な事を言っているので、仰せのままに
$ make gcc word2vec.c -o word2vec -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result gcc word2phrase.c -o word2phrase -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result gcc distance.c -o distance -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result gcc word-analogy.c -o word-analogy -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result gcc compute-accuracy.c -o compute-accuracy -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result chmod +x *.sh
スッキリ
$ svn diff Index: compute-accuracy.c =================================================================== --- compute-accuracy.c (リビジョン 37) +++ compute-accuracy.c (作業コピー) @@ -16,7 +16,7 @@ #include <stdlib.h> #include <string.h> #include <math.h> -#include <malloc.h> +#include <malloc/malloc.h> #include <ctype.h> const long long max_size = 2000; // max length of strings Index: distance.c =================================================================== --- distance.c (リビジョン 37) +++ distance.c (作業コピー) @@ -13,9 +13,10 @@ // limitations under the License. #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <math.h> -#include <malloc.h> +#include <malloc/malloc.h> const long long max_size = 2000; // max length of strings const long long N = 40; // number of closest words that will be shown Index: word-analogy.c =================================================================== --- word-analogy.c (リビジョン 37) +++ word-analogy.c (作業コピー) @@ -13,9 +13,10 @@ // limitations under the License. #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <math.h> -#include <malloc.h> +#include <malloc/malloc.h> const long long max_size = 2000; // max length of strings const long long N = 40; // number of closest words that will be shown