【问题标题】:How to get a list of libraries ffmpeg has linked to (static ffmpeg libraries)?如何获取 ffmpeg 已链接到的库列表(静态 ffmpeg 库)?
【发布时间】:2012-10-12 14:24:53
【问题描述】:

我已经用 newt 配置编译了 Ffmpeg (1.0):

./configure  --disable-doc  --disable-ffplay --disable-ffprobe  --disable-ffserver    --disable-avdevice   --disable-avfilter   --disable-pthreads  --disable-everything --enable-muxer=flv --enable-encoder=flv --enable-encoder=h263 --disable-mmx  --disable-shared   --prefix=bin/  --disable-protocols --disable-network --disable-debug  --disable-asm --disable-stripping

它已编译 - 没有错误 - 标头和库(静态 .a)已就位。 (特殊的实验性 cigwin,实验性 gcc,没有 asm 选项,并且 ffmpeg 平台定义未知)(但我已经编译并测试了它的 boost)

现在我尝试编译我的应用程序。我得到下一个例外:

../ffmpeg-1.0/bin/lib/libavcodec.a: error: undefined reference to 'exp'
../ffmpeg-1.0/bin/lib/libavcodec.a: error: undefined reference to 'log'

我的编译器构建行如下所示:

g++ -static -emit-swf -o CloudClient.swf  -I../boost/boost_libraries/install-dir/include -I../ffmpeg-1.0/bin/include -L../boost/boost_libraries/install-dir/lib -L../ffmpeg-1.0/bin/lib \
    timer.o \
    audio_encoder.o \
    audio_generator.o \
    video_encoder.o \
    video_generator_rainbow.o \
    simple_synchronizer.o \
    multiplexer.o \
    transmitter.o \
    graph_runner.o \
    cloud_client.o \
    -pthread \
    -lswscale \
    -lavutil \
    -lavformat \
    -lavcodec \
    -lboost_system \
    -lboost_date_time \
    -lboost_thread 

因此,正如您所见非常复杂,我已经编译并准备好所有目标文件......只剩下一件事 - 将其全部链接到 ffmpeg(从使用 boost 编译的 ffmpeg 版本中删除)

尝试添加 -lm - 没有帮助...

我的问题是 - 如何获取 ffmpeg 链接到的库列表(如 -lm 等)?

【问题讨论】:

  • 找到数学库的位置并将其添加到库路径“-L”并尝试。
  • 我认为您只是将它们按错误的顺序排列。您需要将-lm 添加到命令行的end,而不是开头。

标签: c compilation linker ffmpeg libraries


【解决方案1】:

如果在 Linux 中,请尝试

ldd /path/to/ffmpeg-binary

ldd `which ffmpeg`

【讨论】:

  • 他无法编译他的应用程序; ldd(猜测加载器依赖项)仅列出已成功编译的应用程序的共享库。
  • 你是否也用'-static'编译了这些库?或者,对于“配置”脚本 --enable-static 选项。
猜你喜欢
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
相关资源
最近更新 更多