问题是:我写了一个使用FFMPEG的简单程序。编译如下:
gcc -lavcodec -lavformat -lavutil -c test.c
gcc -lavcodec -lavformat -Lavut -o test test.o
编译后没有问题,将显示测试文件,但启动时:./测试出现错误:
测试:加载共享库时出错:libavcodec.so.53:无法打开共享对象文件:没有这样的文件或目录
ffmpeg最初是在什么地方构建和安装的,文件libavcodec.so.53在那里。可能是什么问题?
您似乎正在链接自定义库目录-Lavut
中的库。
检查加载程序在哪里查找可执行文件的库:
ldd ./test
如果它们中的任何一个位于非标准目录中(ldd
表示找不到特定库),请将它们附加到LD_library_PATH:
LD_LIBRARY_PATH=/tmp/work/avut ./test
如果愿意,可以使用-rpath
链接器选项(例如gcc ... -Wl,-rpath -Wl,/tmp/work/avut
)将库路径硬编码到可执行文件中。