Linux下ffmpeg库的编译链接

news/2024/10/13 2:14:25

/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目录下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【未整合】数学 day2.2

概率论 在 OI 中,认为概率是事件的固有属性。 将事件的集合称为概率空间。 用 \(\omega\) 表示事件。 认为随机变量 \(X,Y\) 独立,当且仅当 \(P(X=x\text{ 且 }Y=y)=P(X=x)\times P(Y=y)\) 恒成立。 两者互为充要。 令 \(P(A|B)\) 代表在 \(B\) 发生的条件下 \(A\) 发生的概率…

python教程2:if...else...+循环

一、if判断 有单分支、双分支、多分支,下面就是一个多分支的案例:二、缩进三、for循环四、while循环 五、其他 random模块 string模块

网课-概率论学习笔记

qwq基本概念贝叶斯公式 \[\because P(AB) = P(A|B)P(B) \] 期望方差

Mysql中的DQL语句

1.基本语法 SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY column_name [ASC | DESC]] [LIMIT number]; * ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。 * LIMIT number 是一个可选的子句…

C语言解析FLM(ELF)格式文件

代码下载:https://gitee.com/jhembedded/flmparse写这篇博客的目的是因为最近在做一个STM32的离线编程器,离线下载需要用到FLM文件的下载算法,所以实现了一下提取FLM文件中下载算法的C程序。 有关ELF格式的详细说明可查看这个文件:http://flint.cs.yale.edu/cs422/doc/ELF_…

【Netty】【XXL-JOB】时间轮的原理以及应用分析

1 前言 今天晚上看了一本 70 多页的讲解时间轮的 PDF,从是什么为什么以及原理到源码中的应用分析,讲的真好。这节我就按我理解的思路捋一下,记录一下哈。 2 时间轮概述 2.1 时间轮是什么 时间轮是一种高效利用线程资源进行批量化调度的一种调度模型。把大批量的调度任务全…

《软件性能测试、分析与调优实践之路》(第2版) PPT课件流出

扫描图书前言中的如下图所示的二维码,即可进入到下载页面。 如下图所示即为课件的下载页面,免费提供下载 作者的原创文章,转载须注明出处。原创文章归作者所有,欢迎转载,但是保留版权。对于转载了博主的原创文章,不标注出处的,作者将依法追究版权,请尊重作者的成果。…

搭建MongoDB分片集群

目录一、什么是分片二、分片集群1、组件构成2、分片集群内各组件间交互三、数据如何切分四、分片策略1、哈希分片2、范围分片五、分片集群架构六、搭建分片集群1、涉及主机2、所有主机安装MongoDB3、分片节点副本集的创建3.1、第一套副本集shard13.1.1、准备存放数据和日志的目…