閲覧していただきありがとうございます.
初の質問ですので,至らないところもあるかと思いますがどうかよろしくお願いします.


まず,構築環境について記載します.
Macbook air OS X El Capitan 10.11.5
python は anacondaで2.7をインストール済



次に,caffeを実装するうえで現状に至るまで行ったことを記載します.
1.Xcode のインストール
2.Homebrew のインストール
3.Caffe のコードを取得(git clone https://github.com/BVLC/caffe.git
4.pip で必要なソフトウェアをインストール(pip install -r python/requirements.txt)
5.snappy leveldb gflags glog szip lmdbのインストール(for x in snappy leveldb gflags glog szip lmdb homebrew/science/opencv; do brew install --build-from-source --fresh -vd $x; done)
6.Homebrew で protobuf をインストール(brew install --build-from-source --with-python --fresh -vd protobuf)
7.Homebrewで boost などをインストール(brew install --build-from-source --fresh -vd boost boost-python
brew install --build-from-source --fresh -vd hdf5)
8.Makefile.config ファイルを編集(cp Makefile.config.example Makefile.config, emacs Makefile.config)
9.Caffe をビルド&テスト(make clean,make all,make test,make runtest)
10.make pycaffe (←現在ここ)


8.では,今回CPUを使用するので,CPU_ONLY := 1と設定.
  CUSTOM_CXX := /usr/bin/clang++
  BLAS := atlas(openblasを入れたがうまくいかなかったため)に書き換え.
  その他PATHの設定

9.make all を実行した時点でいくつかのwarningが発生.
  ./include/caffe/net.hpp:41:5: warning: unused typedef 'INVALID_REQUESTED_LOG_SEVERITY' [-Wunused-local-typedef]
LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() "
^
/usr/local/include/glog/logging.h:917:30: note: expanded from macro 'LOG_EVERY_N'
INVALID_REQUESTED_LOG_SEVERITY); \
^
/usr/local/include/glog/logging.h:912:73: note: expanded from macro 'GOOGLE_GLOG_COMPILE_ASSERT'
typedef google::glog_internal_namespace_::CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
^
1 warning generated.

  や

  clang: warning: argument unused during compilation: '-pthread'


  make testでも同様のエラーが出てたように思います.

  make runtestの実行結果は,すべてokで,[ PASSED ] 1080 tests.と表示されていました.(数字はうろ覚えで曖昧ですが…)


そして問題の10.です.

python/caffe/_caffe.cpp:10:10: fatal error: 'numpy/arrayobject.h' file not found
#include <numpy/arrayobject.h>
^
1 error generated.
make: *** [python/caffe/_caffe.so] Error 1

のエラーがでてしまい,進みません.(PATHの設定を見なおしたり,arrayobject.hが存在するすべてのPATHを突っ込んで見ましたがうまくいかず…)

numpyがインストールされていることも確認しました.

このQ&Aに関連する最新のQ&A

A 回答 (1件)

https://cmake.org/cmake/help/v3.0/command/includ …
では?

PATHは実行ファイルの検索用で、include fileには関係ありません。

あるいは、Cmakefile にPythonを特定するためのオプションは無いですか?
    • good
    • 0
この回答へのお礼

無事解決することができました!ありがとうございます

お礼日時:2016/06/24 11:31

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qpkg-config のPKG_CONFIG_PATHを設定するには?

$HOME/local/lib/pkgconfig
に .pcファイルがあるので

set PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig
%pkg-config --exists glib-2.0

エラーになってしまいます。

%pkg-config --version
0.15.0


※root管理権限はありません。

Aベストアンサー

> set PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig

setenv PKG_CONFIG_PATH $HOME/local/lib/pkgconfig

――では。シェル変数じゃなく、環境変数として設定するのだと思われます。

参考URL:http://www.is.noda.tus.ac.jp/text030397/text030397-1/node157.html

QOS Xでmake installしたソフトウェアのアップデート

おはようございます。

基本的に必要な物はMacPortsを使って入れているのですが、それでも入らない物に関してはmake installして入れています。(python等)
それもネットを見ながらなので基本的な部分がよく分かっていないのですが、make installで入れたものをアップデートする際はまたmake installで上書きすればいいのでしょうか?

Googleで検索をしてもPPMやyumやapt-getの説明はあるのですが、make installの場合の解説が見つかりません。
もしかしてものすごく基本的なことで上書きすればいいだけなのかもしれませんが、のちのち不具合が出ても怖いので教えてください。

Aベストアンサー

新しいバージョンにするなら、ソースをおとしてきて
./configure→make→make installの一連の作業をするのが妥当かなぁ・・・
configreオプションなど記録しておかないとはまるかもしれないけど

リビジョンであればパッチをあてて./configure(以下略)

ソースからのインストールはデータ不整合などおこる可能性を秘めているので
テストしつつやらないと思った以上にはまる可能性もあります

Qpostfix:warning: damaged messageについて

お世話になっております。

本日メールログを確認したところ、以下のような警告ログがここ最近でているのを見つけました。

postfix/postfix-script: warning: damaged message: corrupt/8382D2BC5AA

WEB等で調べましたが、解決策が見つからず困っております。
アドバイスお願い致します。

Aベストアンサー

読めないか、損傷しているキューファイルですから内容確認して削除でいいのでは?

参考URL:http://www.kobitosan.net/postfix/jman/qmgr.8.html

Qmakeやmake installの結果について

openssl1.0.0eで最近コンパイルをしました。

※1のopensslは、tarから展開したものです。
1.
 cd /usr/local/src/openssl
2.
 ./config --prefix=/usr/local/openssl -openssldir=/usr/local/openssl shared
3 
 .make && ls

4、
 make install && ls

3と4のmakeコマンドの後に、わざとlsをくっつけております。
何が目的かといいますと、
「make中、makeinstall中に、エラーが出てないかを判断したい」
と考えて、&&をつけました。
(&なので、エラーがでたら、きっとlsが走らないだろう。と考えたため)
いざ実行すると、make && ls のls部分が走りませんでした。

・質問
コマンドの実行結果は、何かの環境変数を参照したりすることで
確認できたりするものなのでしょうか?

どなたかご存知の方がいらっしゃいましたら
ご教授お願いします。

Aベストアンサー

makeの途中でエラーが出たらmakeが中断してその旨makeがメッセージを出すのが普通です。

make途中で、コンパイラその他のmakefileから起動されるソフトが、エラーや警告のメッセージを出すことがありますが、makeが中断しなければそれで正常ということです。

makeが中断したらメッセージをさかのぼって原因を調べます。事前に、スクロールバッファを十分用意するなり、他の方が書かれているようにteeするなり。
私は、再度makeしてますけど(エラーのステップだけ再実行される)。

Qシェルスクリプトの実行、「source」と「.」の違いについて

bashのシェルスクリプトを書いています。
当方、Mac Snow Leopard を使っているため、seq コマンドがデフォルトでは使えません。
そこで、.bashrc 内に、seq 関数をあらかじめ自分で定義して、他で使い回したいと思っています。
.bashrc の中に、
function seq() {
i=$1
while [ $i -le $2 ] ; do
echo $i
let i=$i+1
done
}
と、関数を定義しました。
seq 関数をターミナル上で実行すると、
>seq 0 2
0
1
2
と正しく、表示されます。次に、

#!/bin/sh
seq 0 2

と記述したシェルスクリプト(temp.sh)を「source」で実行すると、
>source temp.sh
0
1
2
と正しく、表示されますが、「.」で実行すると、
>./temp.sh
./temp.sh: line 2: seq: command not found
と言われます。
どのような理由によってこの違いが出るのでしょうか??

bashのシェルスクリプトを書いています。
当方、Mac Snow Leopard を使っているため、seq コマンドがデフォルトでは使えません。
そこで、.bashrc 内に、seq 関数をあらかじめ自分で定義して、他で使い回したいと思っています。
.bashrc の中に、
function seq() {
i=$1
while [ $i -le $2 ] ; do
echo $i
let i=$i+1
done
}
と、関数を定義しました。
seq 関数をターミナル上で実行すると、
>seq 0 2
0
1
2
と正しく、表示されます。次に、

#!/bin/sh
seq 0 2

...続きを読む

Aベストアンサー

追記

source は現在のシェルで実行し、結果がそのまま現在のシェルに適応されます。
今回の temp.sh なら
> source temp.sh

> seq 0 2
と入力したのと同等ということになります。

> ./temp.sh
この . はコマンドではなく、 temp.shへのパスを指定するものです。
実行ファイル名だけでコマンドとして実行できるのは、環境変数PATHで指定したディレクトリにあるものだけです。それ以外は、その実行ファイルへの絶対パス、または相対パスが必要となります。
これは、カレントディレクトリにある実行ファイルも例外ではありません。
環境変数PATHに . が無い場合は、 ./ファイル名 と相対パスを指定する必要があります。
(この点は、常に . がPATHにあるように振る舞うMS-DOSやコマンドプロンプトとは違います)
逆に、PATH上にあれば(例えば、 PATH=$HOME/bin:(以下略)となっている時の $HOME/bin )、 temp.sh とファイル名だけで実行できます。

また、こうしたコマンドは新規プロセスで実行されますので、環境変数を除いて、現在の設定は継承されません。
対話的ではないbashや、 shとして起動された bash は .bashrcを読まないので、そこに書いてあることは無効となります。

追記

source は現在のシェルで実行し、結果がそのまま現在のシェルに適応されます。
今回の temp.sh なら
> source temp.sh

> seq 0 2
と入力したのと同等ということになります。

> ./temp.sh
この . はコマンドではなく、 temp.shへのパスを指定するものです。
実行ファイル名だけでコマンドとして実行できるのは、環境変数PATHで指定したディレクトリにあるものだけです。それ以外は、その実行ファイルへの絶対パス、または相対パスが必要となります。
これは、カレントディレクトリにある実行...続きを読む


人気Q&Aランキング

おすすめ情報