测试环境 ubuntu 18.04 64 位,安装vmware and ubuntu
安装后调整 分辨率:
让windows 可以和 linux 互相复制黏贴
sudo apt-get autoremove open-vm-tools
sudo apt-get update
sudo apt-get install open-vm-tools-desktop
一直Y
reboot
依赖安装
sudo apt update
sudo apt-get install make cmake g++ nasm yasm diffutils pkg-config -y
sudo apt install autoconf 编译fdk-aac时用到
sudo apt-get install libtool 编译fdk-aac时用到
关于 configure,make ,make install 的知识点
源码的安装一般由三个步骤组成:配置(configure)、编译(make)、安装(make install)。这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。
configure:对即将安装的软件进行配置,检查当前环境是否满足安装软件的依赖关系。生成Makefile文件。
make:从Makefile中读取指令,然后编译成可执行文件
make install:从Makefile中读取指令,安装到指定位置(二进制文件)。
一、configure
1、前言
configure命令用于配置和准备软件包的自动化安装过程。通常用于源代码安装(即wget+tar的方式)的软件包,通过configure命令可以根据系统环境和用户需求进行自定义配置(并生成编译make所需的Makefile),以保证软件包能够在特定的系统上正确安装和运行。
configure可以生成Makefile,为下一步的编译做准备。
2、用法
./configure [选项]
必须用./configure,不能进入目录后用configure,以python安装为例,在python目录中,就存在configure文件,这个文件就是之后配置所要用的configure脚本。
3、选项
configure脚本有很多配置选项,可以通过./configure --help看到所有可用的配置项。
选项 | 说明 |
--prefix=路径 | 软件包的安装路径,默认/usr/local。 |
--help | 其他选项可以通过help查看 |
说明
如果指定了prefix,例如--prefix=/usr,那么各种文件就在该目录下建立对应的文件夹:
- 可执行文件:/usr/bin
- 资源文件:/usr/share
- ……
如果不指定prefix,那么各种文件会有一些默认的路径:
- 可执行文件:/usr/local/bin
- 库文件:/usr/local/lib
- 配置文件:/usr/local/etc
- 其他资源文件:/usr/local/share
4、例子
1)指定安装路径
./configure --prefix=/opt/software
将软件包安装到/opt/software目录下
二、make和make install
make和make install命令用于使用.tar.gz安装文件的情形下。它们分别实现对源码的编译和安装。
在用./configure --prefix指定了路径的情况下,编译和安装会正确输出到目标路径中。
make:命令工具,对程序进行编译;
make install:将编译好的程序安装到系统中,这样可以在命令行中输入程序名来运行它;
make clean:将编译生成的文件删除,包括中间文件和可执行文件。
make uninstall(make的目录下):卸载
说明
卸载软件时,如果configure时指定了目标路径,那么直接删除该目录即可。也可以在make所在目录下用make uninstsall。
make install
安装时可以用 PREFIX=路径或DESTDIR=路径 安装到指定目录下。
这样,会在指定目录下生成一个bin目录,并在bin目录中存在可执行二进制文件。
make PREFIX=/usr/local/redis install make DESTDIR=/install/directory install
指定路径非必须,因为在make时就已经编译出可执行文件了,make install只是为了安装到Linux系统中常用位置上,因为从默认安装目录下运行程序可能有点不方便。
make install中的PREFIX与configure中的--prefix
本节内容学习自:Linux命令详解./configure、make、make install 命令_爱吃牛肉的大老虎的博客-CSDN博客
假设运行了以下指令
./configure --prefix=/usr/local/nginx
那么,会在/usr/local/nginx目录下,生成bin、lib、etc、share目录。
由于configure已经指定了安装位置,因此后续make install PREFIX不会生效。
make install PREFIX只生效于 解压缩后没有configure文件,有Makefile或makefile的情况。
编译x264
1.解压
tar -xvf x264-master.tar.bz2
2.配置为 动态库的形式,然后configure ,build出来的位置放在 /usr下,放在/usr 下是因为 linux 的执行程序在加载 动态库的时候,和 windows有区别。
windows 加载动态库,会先从 可执行程序exe 的当前路径下找,然后再找环境变量
linux 加载动态库,直接从/usr中找,当然我们也可以配置,但是总是麻烦一些
./configure --enable-shared --prefix=/usr/
--enable-shared表明是生成 动态库文件
3 make -j16
make是一个常用的构建工具,可以帮助我们编译、链接和打包软件代码。make可以读取一个叫做makefile的文件,makefile中定义了编译和链接的规则,以及需要编译的文件和目标文件等信息。通过执行make命令,make会读取makefile文件并根据其中的规则来执行编译和链接操作,生成最终的可执行文件或库文件。
make 命令是生成 动态库
4 sudo make install
hunandede@hunandede-virtual-machine:~/software/x264-master/x264-master$ sudo make install
[sudo] hunandede 的密码:
install -d /usr//bin
install x264 /usr//bin
install -d /usr/share/bash-completion/completions
install -m 644 -T ./tools/bash-autocomplete.sh /usr/share/bash-completion/completions/x264
install -d /usr//include /usr//lib/pkgconfig
install -m 644 ./x264.h x264_config.h /usr//include
install -m 644 x264.pc /usr//lib/pkgconfig
install -d /usr//lib
ln -f -s libx264.so.161 /usr//lib/libx264.so
install -m 755 libx264.so.161 /usr//lib
为什么要用sudo 呢?这是因为我们要给 /usr/ 中写数据,也就是说会将生成的 x264
编译x265
编译x265和264不同,x265提供了在不同平台下的 bash 脚本,用来生成makefile文件
1.解压
tar -xvf x265.tar.bz2
2.进入到bash目录 执行 ./make-Makefiles.bash
cd x265/build/linux
./make-Makefiles.bash
3 make -j16
在make 完成后,可以看到
4 sudo make install
可以看到,我们在没有执行 --prefix,默认会安装在 /usr/local/lib下
hunandede@hunandede-virtual-machine:~/software/x265_20200330/x265/build/linux$ sudo make install
[ 63%] Built target common
[ 85%] Built target encoder
[ 86%] Built target x265-static
[ 87%] Built target x265-shared
[100%] Built target cli
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/libx265.a
-- Up-to-date: /usr/local/include/x265.h
-- Installing: /usr/local/include/x265_config.h
-- Installing: /usr/local/lib/libx265.so.191
-- Up-to-date: /usr/local/lib/libx265.so
-- Installing: /usr/local/lib/pkgconfig/x265.pc
-- Installing: /usr/local/bin/x265
-- Set runtime path of "/usr/local/bin/x265" to ""
编译fdk-acc
0.安装 autoconf 和 libtool
sudo apt update
sudo apt install autoconf
sudo apt-get install libtool原文链接:https://blog.csdn.net/weixin_44114797/article/details/132402381
1.解压
unzip fdk-aac.zip
2.进入fdk-aac文件夹 执行./autogen.sh 生成 configure 文件
./autogen.sh
3.执行configure
./configure --enable-shared --prefix=/usr/
4. make -j16
5. sudo make install
编译ffmpeg
1.解压缩
tar -xvf ffmpeg.
2.进入到ffmepg 目录
3.开始build
./configure --prefix=/usr/ --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265
4. make -j32
5. sudo make install
编写测试程序makefile
为了简单期间,我们先将 windows这边之前写的代码 拷贝到 linux
删除 window这边带过去的debug等文件,编写makefile文件
vim makefile, 需要指定 在编译时候 链接的 lib库,因此有 -lavcodec
first_ffmpeg:first_ffmpeg.cppg++ $^ -o $@ -lavcodec
然后make ,之后执行,执行时会有问题,原因linux找不到动态库,linux找动态库是在/usr/lib下找,而我们的libx265 在make install 的时候,都是放在默认linux 安装文件夹里面的(也就是在/usr/local/lib下),因此我们还要执行一次 拷贝 ,将x265的库文件放在 /usr/lib下
sudo cp /usr/local/lib/libx265.* /usr/lib
执行 ./first_ffmpeg
hunandede@hunandede-virtual-machine:~/code/h265project$ ./first_ffmpeg
debug start
--prefix=/usr/ --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265
debug end
hunandede@hunandede-virtual-machine:~/code/h265project$