いくつかの既存のc++コードの上にSwigインターフェースを追加しようとしていますが、-fPIC
フラグでいくつかのエラーが発生しています。
既存のコードを使用せずにコンパイルして-fPIC
から、次を使用してSwigモジュールを作成する場合:
swig -python -c++ pyinterface.i
gcc -fPIC $(CFLAGS)-I $(PYTHON_INCLUDE_DIR) -c pyinterface_wrap.cxx
g++ -shared -o _pyinterface.so pyinterface_wrap.o -I $(PYTHON_INCLUDE_DIR) -L $(PYTHON_LIB_DIR) $(LPATH) $(LFLAGS) $(IPATH) $(LIBS)
それから私は
warning: creating a DT_TEXTREL in object
ただし、モジュールはPythonでロードおよび動作するようです。
既存のコードをでコンパイルして-fPIC
から、同じことを実行してモジュールを作成する場合、Pythonにインポートしようとすると次のようになります。
import pyinterface
次に、エラーが発生します
ImportError: ./_pyinterface.so: undefined symbol: _Z7InitErfPA20_d
なぜそうなるのかわかりません。ただし、ラップしようとしているベースc ++ファイルのコンパイルでは、それらは。などのいくつかの標準ライブラリにリンクします-llapack
。
lapackのようなこれらのベースライブラリを。で再コンパイルする必要があるのでしょうか-fPIC
。それは非常識なようです。
編集:
実際には申し訳ありませんが、気づきませんでしたが、-fPICフラグをオンにすると、コンパイル中にエラーが発生します。
g++: Internal error: Killed (program cc1plus)
完全なバグレポートを提出してください。手順については、 http://bugs.gentoo.org/を参照してください。
何が起こっているのかがわかったらこの質問を更新しますが、質問が実際に提起するものとは無関係のようです。