【发布时间】: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