2021-08-14

g++ ffmpeg_main.cpp -o main -lstdc++ -lavformat -lavutil

报错

/bin/ld: /tmp/ccIemqbh.o: undefined reference to symbol 'avcodec_parameters_copy@@LIBAVCODEC_58'

/usr/local/lib/libavcodec.so: error adding symbols: DSO missing from command line

collect2: 错误:ld 返回 1

原因,动态依赖库的引用是有顺序的,改成这样就ok了。

g++ ffmpeg_main.cpp -o main  -lavformat -lavcodec  -lavutil

-------------------------------------------------------------------------------------------------------------------------------

运行./main的时候,报错,说动态库不存在

 

./main: error while loading shared libraries: libavformat.so: cannot open shared object file: No such file or directory

然后我把动态库放在ffmpeg目录下,然后把目录拷到/lib下面,运行ldconfig, 发现还是不生效。

后来只能按网上试一试:

在ld.so.conf文件中,加入FFmpeg安装lib路径

sudo vi /etc/ld.so.conf

加入:/usr/local/ffmpeg/lib/

完成后执行如下命令

sudo ldconfig