我已经编写了一个 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
which 应该优先于默认值。可能是因为我自定义安装的 FFmpeg (in /usr/local/lib
) 出于某种原因只安装了静态*.a
库,并且*.so
文件优先于*.a
文件。