私はC初心者なので、これはばかげた質問かもしれません。を介してPythonにインポートするという明確な目的のために、Cオブジェクト(.oファイル)の.soファイル(用語が正しい場合は共有ライブラリ)をコンパイルしようとしていますctypes
。私は最初に*.soをコンパイルしました
gcc -shared -o libvARAM.so ARAM.o ARAM_io.o io.o pre.o rule.o stat.o ART.o vARAM.o
これは機能しましたが、ctypesを介してロードしようとすると、次のような報酬が得られました。
OSError: ./libvARAM.so: undefined symbol: max
少し掘り下げてみると、maxは標準のC関数ではないことに気づきました。電話をldd libvARAM.so
かけると、依存関係の1つがですlibc.so.6
。へのシンボリックリンクを作成してlibc.so
からlibc.so.6
、.soを次のように再コンパイルしてみました
gcc -shared -o libvARAM.so ARAM.o ARAM_io.o io.o pre.o rule.o stat.o ART.o vARAM.o -llibc
生成された
/usr/bin/ld: cannot find -llibc
も試してみると同じエラーが発生します-L/lib/i386-linux-gnu/ -llibc
。私はこのスレッドを知っていますが、makefileの解決策があるため、私の状況とは関係がないと感じています。これが問題になる場合は、Xubuntuを使用しています。
どんな助けでも心から感謝します!