私はPython Cモジュールを作成しました(ffmpeg.c
これは、いくつかのFFmpegライブラリと他のライブラリに依存しています)。リンク方法を知りたいです。
私はコンパイルしています:
cc -std=c99 -c ../ffmpeg.c -I /usr/include/python2.7 -g
私は今、次のものとリンクしようとしています:
ld -shared -o ../ffmpeg.so -L/usr/local/lib -lpython2.7 -lavutil -lavformat -lavcodec -lswresample -lportaudio -lchromaprint ffmpeg.o -lc
エラーはありません。ただし、import ffmpeg
Python で実行しようとすると、次のようになります。
ImportError: ./ffmpeg.so: undefined symbol: avio_alloc_context
多分これはすでに正しいです。ffmpeg.so
で結果を確認したldd
ところ、部分的に間違ったFFmpegにリンクしています。-L/usr/local/lib
ただし、これはデフォルトよりも優先されるため、奇妙です。たぶん、カスタム インストールされた FFmpeg (in /usr/local/lib
) には、何らかの理由で静的*.a
ライブラリのみがインストールされており、*.so
ファイルがファイルよりも優先されるため*.a
です。