首页 > 系统相关 >Linux下ffmpeg库的编译链接

Linux下ffmpeg库的编译链接

时间:2024-05-03 15:24:00浏览次数:14  
标签:lib ffmpeg libavformat 编译 usr Linux config pkg

/usr/bin/ld: /usr/local/ffmpeg/lib/libavformat.a(aviobuf.o): in function `ff_crc04C11DB7_update':
/home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:568: undefined reference to `av_crc_get_table'
/usr/bin/ld: /home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:568: undefined reference to `av_crc'
/usr/bin/ld: /usr/local/ffmpeg/lib/libavformat.a(aviobuf.o): in function `ff_crcEDB88320_update':
/home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:574: undefined reference to `av_crc_get_table'
/usr/bin/ld: /home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:574: undefined reference to `av_crc'

...................(省略)

在Linux下调用ffmpeg的库libavutil, libavformat 时,报出了以上一大堆错误。全是各种库找不到的问题。记录一下解决办法:将ffmpeg提供的所有.pc文件所在的路径加入环境变量PKG_CONFIG_PATH中,使用pkg-config对源代码编译链接。

在ffmpeg的安装目录中,ffmpeg在lib/提供了一个目录pkgconfig,里面存放了各种.pc文件。

 在~/.bashrc末尾加上两行:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig/
export PKG_CONFIG_PATH

然后source .bashrc就行了。之后使用pkg-config进行编译链接:

gcc -o ffmpeg_dir ffmpeg_dir.c `pkg-config --cflags --libs libavutil libavformat`

编译成功:

 

pkg-config

pkg-config是Linux下的一个工具,可以用 sudo apt install pkg-config 安装。pkg-config 用于获得一个库/模块与编译链接相关的信息。如:

pkg-config libavutil --cflags --libs

获取与 libavutil 的include 地址以及库/模块的地址:

 可用pkg-config显示的模块信息需要将对应的.pc文件加入环境变量PKG_CONFIG_PATH下。如,我这里libavutil.pc所在目录为/usr/local/ffmpeg/lib/pkgconfig, 所以只有当环境变量PKG_CONFIG_PATH包含路径/usr/local/ffmeg/lib/pkgconfig时,pkg-config libavutil --cflags --libs 才能输出该模块相关的信息。

或者:.pc文件在/usr/lib目录下。

标签:lib,ffmpeg,libavformat,编译,usr,Linux,config,pkg
From: https://www.cnblogs.com/pkuqcy/p/18171235

相关文章

  • linux18-软件安装
    linux18-软件安装yum需要root权限和网络连接RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题安装包为.rpm文件(适用于centOS,对应ubuntu中的apt)yum[-y][install|remove|search]软件名称选项:-y自动确认,无需手动确认安装和卸载的......
  • Linux常用命令
    Linux常用命令目录Linux常用命令用户相关修改密码创建用户基本命令查看手册对输出进行搜索对输出进行分页后台运行程序列出所有进程关闭特定进程让程序以服务的形式运行关机重启文件和目录相关查看文件内容查看目录文件列表修改权限修改所属用户修改所属组软件相关安装软件查看已......
  • linux14-权限控制信息
    linux14-权限控制信息文件信息:-文件d文件夹l软链接权限分类:r,read,读取w,write,写入x,execute,执行权限信息组成如drwxr-xr-x表示:d,表示这是一个文件夹rwx,表示所属用户的权限是rwx(可读,可写,可执行)r-x,表示所属用户组......
  • linux15-chmod修改文件,文件夹权限信息
    linux15-chmodchmodchangemode修改文件,文件夹的权限信息只有所属用户或root用户可以修改chmod[-R]权限文件或文件夹选项-R,对文件夹内的全部内容应用同样的操作(遍历)#将hello.txt的文件权限修改为rwxr-x--x#u,user;g,group;o,otherchmodu=rwx,g=rx,o=xh......
  • linux16-chown 修改文件,文件夹所属用户和用户组
    linux16-chown修改文件,文件夹所属用户和用户组changeowner需要root权限chown[-R][用户][:][用户组]文件或文件夹选项:-R,同chmod,表示对文件夹及其内部的所有内容应用同样规则[:]用于分割用户和用户组将hello.txt的所属用户修改为rootchownroothello.txt......
  • linux17-快捷键
    linux17-快捷键ctrl+c强制停止/退出输入ctrl+d退出账户登录/退出某些程序专属页面(不包括vi/vim)history查看历史!p匹配p前缀的最近命令ctrl+rp匹配含有关键词p的最近命令光标移动快捷键ctrl+a命令开头ctrl+e命令结尾ctrl+←向左一个单......
  • linux提取具体某一行的日志文件信息出来
    在Linux系统中提取某一行可以使用命令行工具sed、awk、grep、head或tail。以下是各个命令的用法:sed命令sed命令是一个强大的文本处理工具,可以用来从文件或输入流中选择、编辑、替换某一行。下面的命令提取文件file.txt中的第5行:sed-n'5p'file.txt其......
  • Linux环境变量与进程环境列表
    作者:jackson更新时间:20240502一、概述每个进程都有一份环境列表,即在用户空间内存维护的一组环境变量。调用fork()创建的新进程,会继承父进程的环境副本,这也为父子进程间通信提供了一种机制。调用exec()替换当前正在运行的程序时,新程序要么继承老程序的环境,要么在exec()......
  • Linux进程
    程序与进程程序:是可执行文件,其本质是是一个文件,程序是静态的,同一个程序可以运行多次,产生多个进程进程:它是程序的一次运行过程,当应用程序被加载到内存中运行之后它就称为了一个进程,进程是动态的,进程的生命周期是从程序运行到程序退出父子进程:当一个进程A通过frok()函数创建出进......
  • FFmpeg常用命令案例记录
    音频转换mp3为ogg格式ffmpeg-iinput.mp3-c:alibvorbisoutput.ogg降低音量(例如50%)ffmpeg-iinput.mp3-af"volume=0.5"output.mp3视频转换mkv为mp4并进行无损压缩ffmpeg-iinput.mkv-c:vlibx264-crf18-presetslow-c:acopyoutput.mp4转换4K为10......