(一)环境及所需文件

1. Ubuntu 16.04 (gcc/g++ 7.1)

2. FFmpeg-2.8.15 (http://ffmpeg.org/download.html#releases)

3. SDL-2.0.10 (http://www.libsdl.org/download-2.0.php)

4. simplest_ffmpeg_player (https://github.com/leixiaohua1020/simplest_ffmpeg_player)

(二)配置、安装FFmpeg和SDL

1. 解压 FFmpeg 的压缩包(如 ffmpeg-2.8.15.tar.gz)到当前目录,然后通过终端进入该目录,并编译、安装:

cd ./ffmpeg-2.8.15
./configure --disable-yasm #此处选项为yasm报错
make
sudo make install

2. 解压 SDL 的压缩包(如 SDL2-2.0.10.tar.gz)到当前目录,然后通过终端进入该目录,并编译、安装:

cd ./SDL2-2.0.10
./configure
make
sudo make install

(三)编译simplest_ffmpeg_player

解压simplest_ffmpeg_player的压缩包(如 simplest_ffmpeg_player_2.5.zip),然后通过终端进入子目录simplest_ffmpeg_player,并编译:

cd ./simplest_ffmpeg_player_2.5
cd ./simplest_ffmpeg_player
g++ simplest_ffmpeg_player.cpp -g -o simplest_ffmpeg_player.out -I /usr/local/include/ -L /usr/local/lib -lSDL2main -lSDL2 - lavcodec -lavutil -lswscale -pthread -lz -lm -lbz2 -lswresample

因环境配置原因,原本的simplest_ffmpeg_player中的gcc编译命令(complile_gcc.sh)

#! /bin/sh
gcc simplest_ffmpeg_player.cpp -g -o simplest_ffmpeg_player.out \
-I /usr/local/include -L /usr/local/lib -lSDL2main -lSDL2 -lavformat -lavcodec -lavutil -lswscale

会报错。

具体报错如下形式:

1. 缺少 -pthread:

/usr/bin/ld: /usr/local/lib/libavformat.a(udp.o): undefined reference to symbol 'pthread_cancel@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

2. 缺少 -lz:

/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1077: undefined reference to `inflateInit_'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1087: undefined reference to `inflate'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1105: undefined reference to `inflateEnd'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/rtmpproto.c:1105: undefined reference to `inflateEnd'

3. 缺少 -lbz2:

/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1325: undefined reference to `BZ2_bzDecompressInit'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1340: undefined reference to `BZ2_bzDecompress'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1333: undefined reference to `BZ2_bzDecompressEnd'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavformat/matroskadec.c:1343: undefined reference to `BZ2_bzDecompressEnd'

4. 缺少 -lswresample:

/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_subpacket':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:379: undefined reference to `swr_is_initialized'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_frame':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:220: undefined reference to `swr_is_initialized'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_init_resample':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:161: undefined reference to `swr_init'
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:167: undefined reference to `swr_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_frame':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:234: undefined reference to `swr_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_flush_resample':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:115: undefined reference to `swr_convert'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_subpacket':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:411: undefined reference to `swr_close'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_flush':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:614: undefined reference to `swr_close'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_close':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:638: undefined reference to `swr_free'
/usr/local/lib/libavcodec.a(opusdec.o): In function `opus_decode_init':
/home/ecc/Documents/ffmpeg/ffmpeg-2.8.15/libavcodec/opusdec.c:705: undefined reference to `swr_alloc'

参考

https://blog.csdn.net/leixiaohua1020/article/details/38868499

Linux编译simplest_ffmpeg_player相关推荐

  1. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  2. linux 编译c_含有CGO代码的项目如何实现跨平台编译

    目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...

  3. linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接

    大家肯定都知道计算机程序设计语言通常分为机器语言.汇编语言和高级语言三类.高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类 ...

  4. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果

    # 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...

  5. centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...

    一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c  -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...

  6. linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...

  7. linux libvpx编译安装,linux编译安装时常见错误解决办法

    **configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution** 复 ...

  8. linux编译安装的好处,Linux学习—源码安装

    源码安装--可以按照自己的需求安装,这是源码安装的好处,而二进制安装无法选择 大部分的源码安装步骤大致相同,具体细节可以参考解压缩之后的README和INSTALL README: 介绍了软件包的功能 ...

  9. 如何对linux文件进行编译,linux编译和执行命令都有哪些?该如何实现?

    我们知道,Linux是比如手机.平板电脑.路由器.台式计算机计算机设备的核心,它们都使用着Linux系统.以现在来说,一个合格的开发者必须要对Linux有一定的了解,那么,下面就跟小编一起来看看Lin ...

  10. .net core linux 编译,.NET Core 源码编译的问题解析

    引言: .NET Core 源码编译 https://github.com/dotnet git clone https://github.com/dotnet/runtime.git 一:Windo ...

最新文章

  1. 实现等待窗体的几种方式
  2. PHP函数series,PHP: 简介 - Manual
  3. java高效编程_Java高效编程
  4. php超星查课接口,这是一个可以查询超星课程的接口,请教一下该怎么用啊
  5. 十二五期间三网融合将有实质性进展
  6. 发布锁定表头的一个思路
  7. mysql查询中使用别名_在mysql子查询中使用外部别名
  8. 数字图像中高频噪声的滤波
  9. BOMRemover v2.0 去除代码中的UTF-8 BOM
  10. 传奇单机架设GOM引擎图文教程!
  11. word自定义多级编号列表
  12. 看完《二舅》,我更内耗了
  13. 苏州Uber优步司机奖励政策(8月31日至9月6日)
  14. 王者荣耀会成为下一个微信吗?
  15. 2022国赛论文及可运行代码
  16. 计算机鼠标一直转圈圈 打不开文件,win7系统打开文件夹时鼠标右键一直转圈怎么办?通过bat文件来解决...
  17. 大数据的特点:5个V
  18. GAMES-101-个人总结归纳-Shading
  19. PMP考前冲刺题2022(错题)含解析
  20. Android代码中发送Keycode按键

热门文章

  1. 深度半监督学习方法总结
  2. js eq()选择器的使用
  3. 测试图片,视频 地址
  4. 数据库例题(创建数据库SPJ包含S、P、J和SPJ表)
  5. 第七章第二十三题(游戏:储物柜难题)(Game: locker problem)
  6. Objective C转Swift注意事项(一)合理使用结构体,枚举,extensions
  7. 染色质调控区域的研究: 对CHIP-seq和ATAC-seq发展的深入思考
  8. 链家房源数据清洗和预处理(pandas)
  9. 杨歌:金融电路与 Web3 经济模型原理 (转载及导言)
  10. 双显示器LOL加载游戏提示error无法初始化图形设备解决方法