私は "C++ portaudio library"をpython呼び出し可能ライブラリ(module)である "C++ demo module"と統計的にリンクしようとしています。Python/C++バインディング、distutilsでstatics C++ライブラリ(portaudio)をもう一度リンクする方法は?
私はdistutilsのでこれをやっているし、次のように静的リンクを実行するために、私は、extra_objects引数にlibportaudioを追加しました:
のpython setup.pyのビルド」でコンパイルmodule1 = Extension(
"demo",
sources=cppc,
# TODO remove os dependency
extra_compile_args=gccArgs,
# link against shared libraries
#libraries=[""]
# link against static libraries
extra_objects=["./clib-3rd-portaudio/libportaudio.a"]) # << I've added the static lib here
/usr/bin/ld:./clib-3rd-portaudio/libportaudio.a(pa_front.o):再配置R_X86_64_32は `.rodata.str1.8 'とすることはできません共有オブジェクトを作成するときに使用されます。 -fPIC ./clib-3rd-portaudio/libportaudio.aで再コンパイル:エラーがシンボルを追加:バッド値 collect2はを:エラー:ldが、私は明白なことを試してみた。この時点ではそう
1つの終了ステータスを返し、私は」次のように、(上記注extra_compile_argsの=のgccArgs)gccArgsに-fPIC FLAGGを追加しまし:
gccArgs = [
"-Icsrc",
"-Icsrc/paExamples",
"-Icinc-3rd-portaudio",
"-Icinc-3rd-portaudio/common",
"-Icinc-3rd-portaudio/linux",
"-fPIC"] # << I've added the -fPIC flag here
しかし、これは正確に同じエラーが発生したので、私は-fPICフラグが根本的な原因ではないと思います。私はおそらく何かが不足しているだろうが、私はここで少し失われている、誰かが助けることを願って。
Thx!を参照してください。 configure -hは利用可能なすべてのオプションを表示します。最終的に 'configure CFLAGS = -fPIC' – Gio