私はPyDSTool
packageを動的システムの解析に使用するpython2.7
で構築された複雑なプロジェクトに属しています。 PyDSTool
は、ソースがC/C++
個のファイルでコード化されている方程式のシステムを統合するために使用したい2つのCベースのインテグレータ(RadauとDopri)を提供しています。-std = C++ 11のGCCは、(PyDSTool経由で)C++ヘッダーファイルを表示しません
私はパッケージにはほとんど制御を持っている、と私は、積分器をインスタンス化するとき、私は、コンパイラの検索パスに含めるなどし*.H
ファイル、ソースファイル(*.C
、*.CPP
に)ヘッダを追加し、ディレクトリを渡すことができますリンク先のライブラリ。
コードの一貫した部分はC++11
に基づいているので、私はコンパイラにも引数-std=C++11
を渡しています。
結局、順番にコマンドをdistutils
からbuild_ext
を実行/PyDSTool/Generators/mixins.py
打ち上げsetup
コマンド(ライン185)は、上記のすべてのフラグが付加されています。明確にするために
:私は追加していますフラグは以下のとおりです。
compile options: '-I/usr/lib64/python2.7/site-packages/numpy/core/include -I/home/maurizio/Dropbox/StabilityAnalysis_tmp -I/usr/local/pydstool/PyDSTool/integrator -I/usr/include/python2_7 -I/usr/include/numpy -I/home/maurizio/Dropbox/Ongoing_Projects/pycustommodules -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries/models -I/home/maurizio/Dropbox/Ongoing_Projects/DePitta_PNAS/Software/Stability_Analysis/ -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c'
extra options: '-std=c++11 -w -Wno-return-type -Wall -lpython2.7 -lm -lgsl -lgslcblas -D__DOPRI__'
結果のコンパイルコマンドPyDSTool
によって発行されたとして読み取ります
build.log
ファイルに探して
error: Command "gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/home/maurizio/Dropbox/StabilityAnalysis_tmp -I/usr/local/pydstool/PyDSTool/integrator -I/usr/include/python2_7 -I/usr/include/numpy -I/home/maurizio/Dropbox/Ongoing_Projects/pycustommodules -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries/models -I/home/maurizio/Dropbox/Ongoing_Projects/DePitta_PNAS/Software/Stability_Analysis/ -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c /home/maurizio/Dropbox/StabilityAnalysis_tmp/dop853_temp/ei_network_vf.c -o /home/maurizio/Dropbox/StabilityAnalysis_tmp/dop853_temp/home/maurizio/Dropbox/StabilityAnalysis_tmp/dop853_temp/ei_network_vf.o -std=c++11 -w -Wno-return-type -Wall -lpython2.7 -lm -lgsl -lgslcblas -D__DOPRI__" failed with exit status 1
PyDSTool
によって、終了ステータスは、コンパイラが私のコードで使用されるいくつかのルーチン/ libsにあるC++
ライブラリを見ないという事実に起因することが分かります。私はpythonで、または同じコンパイルし、上記の貼り付け、余分なオプションを持つscipy.weave
て、スタンドアロンとしての私のコードをコンパイルする場合ので
/usr/include/blitz/blitz.h:45:18: fatal error: string: No such file or directory
#include <string>
^
Compilation Terminated
さて、それは、私のコードの問題ではありません、それは動作します。インテグレータ内でコードを作成するのは、PyDSTool
の問題です。私はdistutils
とすべてgcc
のオプションでは実用的ではないので、私はいくつかの洞察力を私に提供できるいくつかの専門家がここにいることを望む。私はいくつかのオプションやコンパイラに渡すものがないことが実際には疑わしいです。
ソースファイルは '.c'で終わり、' gcc'は通常はCコンパイラの呼び出しですが、 'blitz.h'はC++のみのヘッダのようです。それは何であるはずですか? C++の場合、呼び出しは 'g ++'と終了 '.cpp'でなければなりません。 'build_ext'がC++をサポートするかどうかはわかりません。 – user4407569
@Eichhörnchen良い点。私は 'PyDSTool'が' .C'ファイルを生成しているという事実を忘れていました。実際、コード内の拡張子を置き換えることは、まだコンパイルされませんが、少し前進しているようです。 – maurizio