编译工具链,生成各个平台的ffmpeg版本的库

1.在开始动手编译ffmpeg之前我们来梳理一下几个概念,gcc、g++、msvc、mingw、clang、cmake、make、qmake

作为一个windows软件工程师,以为长时间浸淫在各种强大的IDE的世界里,对编译的过程和相关的工具链还是相当陌生的。上面举出来的几个词语是自己在要编译各种平台的库的时候遇到的,因为Qt是跨平台的,所以要求相关的库也要跨平台;

  • gcc/g++ 是c和c++对应的编译器,完成代码的编译和链接过程,clang也可以用来编译c++ oc,编译oc的时候效率是gcc的三倍。gcc/g++和clang是linux下常用的编译器,gcc是GNU的亲儿子,clang是后起之秀
  • msvc是windows环境下的c++编译器,MinGW 就是 GCC 的 Windows 版本 可以实现交叉编译
  • make是用来执行makefile的
  • cmake是抽象层次更高的项目管理工具,cmake命令执行的CMakeLists.txt文件。生成makefile  
  • cmake和qmake在Linux等环境下最后还是会生成一个Makefile


下图标示了几个概念的抽象层次:

参考https://www.cnblogs.com/DLarTisan/p/7070609.html

2.开始编译

  1. 编译windows版本的ffmpeg
  2. 编译linux版本的ffmpeg
  3. 编译mac os版本的ffmpeg
  4. 编译android版本的ffmpeg
  5. 编译ios版本的ffmpeg

原文地址:https://www.cnblogs.com/wzxNote/p/11643519.html

时间: 2024-11-09 00:33:08

编译工具链,生成各个平台的ffmpeg版本的库的相关文章

编译工具链

GCC命令: 格式:gcc -[命令选项]  文件名(这里指需要编译的文件名) 一个C语言程序需要经过这几个过程才能进行一个可以执行的文件 例如hello.c这个源文件 Hello.c--> hello.i-->hello.s-->hello.o-->hello -E          -S        -C 将一个汇编文件编译成一个可以烧写到开发板中二进制文件的步骤 (1)执行命令arm-linux-gcc -c -g  XXX.S (注意最后的扩展名是大写) (2)执行命令a

Linux上安装编译工具链

在Linux上安装编译工具链,安装它会依赖dpkg-dev,g++,libc6-dev,make等,所以安装之后这些依赖的工具也都会被安装.ubuntu软件库中这么描述 Informational list of build-essential packages If you do not plan to build Debian packages, you don't need this package. Starting with dpkg (>= 1.14.18) this package

GNU编译工具链介绍---Antoconf

大家在下载很多自由软件的源码下来编译的时候,都要用到configure这个命令,然后make,make install等等,这里我们就浅显地介绍一下什么是autoconf: 1. 基本介绍 autoconf就是一个生成shell脚本(或者其他操作系统上的可解释脚本或程序)的程序,生成的shell脚本用来根据所在的编译环境对源码进行配置.举个很简单的例子,比如我在Linux和Mac上面编译同样一份源码,编译出的程序可能一个显示Linux版本信息,一个显示Mac的版本信息,这就是autoconf起到

ARM64编译工具链下载

下面是自制的用于编译ARMv8指令的交叉编译工具链: 1.运行在PC上,支持SVE指令,不支持SVE ACLE,版本GCC9.2 https://pan.baidu.com/s/1_NnwajWCelT3rRUuM-yl6Q 2.运行在Qemu+Ubuntu18.04+ARM64,支持SVE ACLE,版本GCC9.0 https://pan.baidu.com/s/1qHeKnH5MiTCw_v9GnRJwJg 3.运行在Firefly RK3399 + Ubuntu16.04,支持SVE A

嵌入式交叉工具链编译

读者可能会有疑问,为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台 (X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统.这种方法在异平台移植和嵌入式开发时非常有用.相对与交叉编译,平常做的编译叫本地编译,也 就是在当前平台编译,编译得到的程序也是在本地执行.用来编译这种跨平台程序的编译器就

Ubuntu 编译 ARM-Linux-Gcc 工具链 -- 通过crosstool-NG制作工具链

1.手动下载制作过程中所需要的包,节省时间 所用包如下(不同版本所有包版本有所不同) libtool-2.4.6 linux-3.2.87 gmp-6.1.2 mpfr-3.1.5 isl-0.16.1 mpc-1.0.3 libelf-0.8.13 expat-2.2.0 ncurses-6.0 libiconv-1.15 gettext-0.19.8.1 binutils-2.28 gcc-5.4.0 glibc-2.25 duma_2_5_15 gdb-7.12.1 ltrace-0.7.

Android开发实践:Android交叉编译工具链的使用

前面2篇文章分别介绍了Android NDK编译的命令行参数,以及如何在任意目录使用Android.mk来编译本地c/c++代码,Andriod.mk和ndk-build只不过是Android官方提供了一套封装过的Android交叉编译环境而已,其实,你可以不用它,而直接通过传统的Makefile文件来编译你的c/c++代码的,本文即介绍如何直接通过传统的Makefile文件来编译可用于Android平台的库文件. 经常搞嵌入式开发的朋友对于交叉编译环境应该并不陌生,说白了,就是一组运行在x86

【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发

交叉编译工具链介绍《Building Embedded Linux Systems》

1.前言 配置和编译一个合适的GNU工具链是相对复杂的并且需要很精细的操作,包括你需要对不同软件库之间的依赖关系.它们的各自的任务,不同软件库版本情况都有比较好的了解,编译工具链是一个乏味的工作. 2.制作之前需要了解的一些术语与名称 1)build:你编译你的工具链时所使用的编译系统. 2)host:交叉编译工具链运行在的主机系统. 3)target:你的交叉编译工具链所生成的可执行文件所要运行的目标系统. 在一些通用非嵌入式的使用,以上三个必须是一样的.但是大部分嵌入式开发中,build跟h