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

Linux下ffmpeg库的编译链接的更多相关文章

  1. Linux下FFmpeg的安装编译过程【转】

    本文转载自:http://www.linuxidc.com/Linux/2013-06/85628.htm 详细说下在Linux下FFmpeg的安装编译过程.参考 Ubuntu 10.04安装编译FF ...

  2. linux下json库的编译及例程

    .下载JsonCpp http://sourceforge.net/projects/jsoncpp/files/ .下载scons http://sourceforge.net/projects/s ...

  3. Linux下boost库的编译、安装详解

    下载boost源码 boost下载地址 解压到一个目录 tar -zxvf boost_1_66_0.tar.gz 编译boost库 进入boost_1_66_0目录中 cd boost_1_66_0 ...

  4. 深入理解LINUX下动态库链接器/加载器ld-linux.so.2

    [ld-linux-x86-64.so.2] 最近在Linux 环境下开发,搞了好几天 Compiler 和 linker,觉得有必要来写一篇关于Linux环境下 ld.so的文章了,google上搜 ...

  5. 谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

    谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.ph ...

  6. Linux下动态库生成和使用

    Linux下动态库生成和使用 一.动态库的基本概念 1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态链接库是目标文件的集合,目标文件在动态链接库中 ...

  7. Linux下静态库生成和使用

    Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object  files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. ...

  8. linux下静态库和动态库一些东西

    http://www.cnblogs.com/changefuture/archive/2011/12/22/2297460.html Linux  动态链接库和静态库示例 文件预览 文件目录树如下, ...

  9. [转]Caffe在Linux下的安装,编译,实验

    Caffe在Linux下的安装,编译,实验  原文地址:http://www.cnblogs.com/evansyang/p/6150118.html 第一部分:Caffe 简介 caffe是有伯克利 ...

  10. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

随机推荐

  1. .NET Emit 入门教程:第六部分:IL 指令:2:详解 ILGenerator 辅助方法

    前言: 经过前面几大部分的学习,已经掌握了 Emit 的前因后果,今天来详细讲解 Emit 中 IL 的部分内容. 如前文所讲,通过 DynamicMethod(或 MethodBuilder)可获得 ...

  2. #线段树#洛谷 4681 [THUSC2015]平方运算

    题目 给定一个数列 \(a\),维护以下两种操作 区间取平方 \(a[i]=a[i]^2\bmod p\) 区间和(不取模) \(p\) 为给定的小于 \(10^4\) 的数,\(n\leq 10^5 ...

  3. #交互#CF1370F2 The Hidden Pair (Hard Version)

    题目 分析 考虑询问所有点可以知道两个标记点路径上的一个点, 以该点为根建树,可以二分出离该点较远的一个标记点, 再用这个标记点一次询问推出另一个,最多11次询问 代码 #include <cs ...

  4. #trie#A 区间异或

    题目 给定一个长度为\(n\)的序列,询问有多少个\((l,r),1\leq l\leq r\leq n\)满足 \[xor_{l\leq j\leq r}a_j\geq k \] 分析 显然跑一次前 ...

  5. Python 注释:解释和优化代码可读性

    注释可以用来解释Python代码.注释可以用来使代码更易读.注释可以用来在测试代码时防止执行. 创建注释 注释以#开始,Python会忽略它们: 示例:获取您自己的Python注释 # 这是一个注释 ...

  6. 4. Orthogonality

    4.1 Orthogonal Vectors and Suspaces Orthogonal vectors have \(v^Tw=0\),and \(||v||^2 + ||w||^2 = ||v ...

  7. Matplotlib绘图设置---图形剖析和构建

    图形剖析和构建 Matplotlib的目标对象是用Python对象表示任意图形元素.Figure对象可以看作盛放图形元素的包围盒,其他的Matplotlib对象(Axes.Title.Grid.Spi ...

  8. 如何使用ODBC应用程序接口连接数据库

    如何使用 ODBC 应用程序接口连接数据库? 安装 unixODBC. yum install -y unixODBC yum install -y unixODBC-devel 下载并安装 open ...

  9. HarmonyOS 自定义页面请求与前端页面调试

      一.自定义页面请求响应 Web组件支持在应用拦截到页面请求后自定义响应请求能力.开发者通过onInterceptRequest()接口来实现自定义资源请求响应 .自定义请求能力可以用于开发者自定义 ...

  10. CentOS文件备份|还原

    CentOS文件备份|还原 时间:2014-03-18 00:27 来源:51cto博客 作者:sailyangfan的空间 举报 点击:205次 dump备份 restore还原 dd数据备份 mk ...