0

いくつかの既存の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/を参照してください。

何が起こっているのかがわかったらこの質問を更新しますが、質問が実際に提起するものとは無関係のようです。

4

1 に答える 1