【问题标题】:FFMPEg and gcc problemFFMPEg 和 gcc 问题
【发布时间】:2011-09-19 13:03:15
【问题描述】:

问题是这样的:我写了一个使用 FFMPEG 的简单程序。编译如下:


gcc -lavcodec -lavformat -lavutil -c test.c

gcc -lavcodec -lavformat -Lavut -o test test.o

编译没有问题,出现测试文件,但是启动时: . / 测试 发生错误:

。 / 测试:加载共享库时出错:libavcodec.so.53:无法打开共享对象文件:没有这样的文件或目录

ffmpeg 最初构建和安装的位置以及那里的文件 libavcodec.so.53。可能是什么问题?

【问题讨论】:

  • 只是一个评论:链接时您应该始终将库放在最后:gcc -o test test.o -lavcodec -lavformat -Lavut。运行此程序时,请确保将 LD_LIBRARY_PATH 设置为包含 avut。只需运行 ldd ./test 即可查看加载程序期望库的位置。

标签: c gcc linker ffmpeg compilation


【解决方案1】:

您似乎正在链接自定义库目录中的库,-Lavut

检查您的加载器在哪里寻找可执行文件的库:

ldd ./test

如果它们中的任何一个位于非标准目录中(并且ldd 表示找不到特定的库),请将它们附加到 LD_LIBRARY_PATH:

LD_LIBRARY_PATH=/tmp/work/avut ./test

如果您愿意,您可以使用 -rpath 链接器选项将库路径硬编码到可执行文件中,例如gcc ... -Wl,-rpath -Wl,/tmp/work/avut.

【讨论】:

  • 一切正常。帮助:LD_LIBRARY_PATH=/usr/local/lib. / 测试谢谢:)
  • @Kyborg2011 这个命令不能单独运行,你需要使用export LD_LIBRARY_PATH=path/to/library/dir。如果不使用export,程序将看不到环境变量。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多