文章目录
前言
记录一下Linux平台部分开源库编译步骤,防止每次用到都去百度,长期更新
一、log4cpp
解压缩之后,终端命令进入当前目录,输入命令如下:
编译平台:AMD64
sudo ./configure --prefix=<目标文件生成路径-绝对路径> --with-pthreads
sudo make
sudo make check
sudo make install
编译平台:ARM64
sudo ./configure --prefix=<目标文件生成路径-绝对路径> --with-pthreads --build=arm
sudo make
sudo make check
sudo make install
二、ffmpeg
解压缩之后,终端命令进入当前目录,输入命令如下:
sudo apt-get install yasm
sudo ./configure --prefix=<目标文件生成路径-绝对路径> --enable-shared --enable-static --disable-doc
sudo make
sudo make install
补充:编译带x264和x265的ffmpeg库
1 、编译x265的库
下载解压后,先安装cmake和yasm
1.1 amd64版本的
1) cd ./x265_3.2/build/linux
2) sh make-Makefiles.bash 或 chmod +x make-Makefiles.bash ./make-Makefiles.bash
3) 配置界面,根据需要修改,我就改了CMAKE_INSTALL_PREFIX-安装路径,其他没动,Enter-编辑,c-确认修改,e-退出帮助,g-退出
4)make -j8
5) make install
1.2 amd64版本的
安装交叉编译器,需要匹配目标机器的gcc的版本
1) 查看目标机器gcc版本, gcc --version
2)查找目标机器的libc.so.6库,sudo find / -name libc.so.6,查看libc.so.6的版本,执行strings /lib/aarch64-linux-gnu/libc.so.6 |grep GLIBC_,查看结果如下:
xxx@xxx:/lib/aarch64-linux-gnu$ strings libc.so.6 | grep ^GLIBC_
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_PRIVATE
接下来就是找一个交叉编译链,在上文可以看到目标机gcc的版本是gcc version 5.4.0,就以这个版本开始前后找,打开网站
folder 4.9-2016.02 -
folder 4.9-2017.01 -
folder 5.1-2015.08 -
folder 5.2-2015.11 -
folder 5.2-2015.11-1 -
folder 5.2-2015.11-2 -
folder 5.3-2016.02 -
folder 5.3-2016.05 -
folder 5.4-2017.01 - //这两个版本看样子符合我们的要求起码是5.4版本的
folder 5.4-2017.05 -
再点击进入几层目录,选着适合自己的版本,下载、解压、查看版本,具体如下:
xxx@xxx:/usr/local/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/lib$ strings libc.so.6 | grep ^GLIBC_
GLIBC_2.17
GLIBC_2.18
GLIBC_PRIVATE
说明目标机器的版本正好兼容虚拟机的版本,可以使用,然后进行如下操作
1) cd ./x265_3.2/build/arm-linux
2) 编辑make-Makefiles.bash和crosscompile.cmake文件
crosscompile.cmake:
set(CROSS_COMPILE_ARM 1)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm64)
# specify the cross compiler
set(CMAKE_C_COMPILER xxx/aarch64-none-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER xxx/aarch64-none-linux-gnu-g++)
# specify the target environment
SET(CMAKE_FIND_ROOT_PATH xxx/aarch64-none-linux-gnu)
make-Makefiles.bash:
cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" ../../source && ccmake ../../source
2) sh make-Makefiles.bash 或 chmod +x make-Makefiles.bash ./make-Makefiles.bash
3) 我的配置界面如下图,根据自己的需要修改,Enter-编辑,c-确认修改,e-退出帮助,g-退出
4)make -j8
5) make install
部分编译bug记录:
- arm板子上直接编译x265报错,pixel.cpp的函数pysCost_pp处报内部错误,段错误,不知道咋解决
- 执行完make报错之后,要把所有文件删除,再重新sh make-Makefiles.bash,不然还是会报错
2 、编译x264的库
下载解压后,cd进入目录
./configure --enable-static --enable-pic --cross-prefix=xxx --extra-cflags="-fPIC"
make -j8
make install
3 、编译带x265和x264的ffmpeg库
.sudo ./configure \
--pkg-config="pkg-config --static" \
--prefix=xxx \
--disable-static \
--enable-shared \
--disable-debug \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--enable-small \
--enable-gpl \
--enable-nonfree \
--enable-libx264 \
--enable-libx265 \
--enable-openssl \
--enable-hardcoded-tables \
--enable-swresample \
--enable-decoder=h264 \
--enable-decoder=hevc \
--enable-decoder=mjpeg \
--enable-decoder=aac \
--enable-encoder=libx264 \
--enable-encoder=libx265 \
--enable-encoder=mjpeg \
--enable-encoder=pcm_s16le \
--enable-decoder=pcm_s16le \
--enable-protocol=file \
--enable-protocol=rtp \
--enable-protocol=tcp \
--enable-protocol=udp \
--enable-demuxer=mp3 \
--enable-demuxer=wav \
--enable-demuxer=mpegts \
--enable-demuxer=mov \
--enable-demuxer=flv \
--enable-bsf=h264_mp4toannexb \
--enable-bsf=hevc_mp4toannexb \
--enable-bsf=aac_adtstoasc
部分报错:
- ERROR: x265 not found using pkg-config
1)执行sudo apt install pkg-config
2)执行configure之前先运行export PKG_CONFIG_PATH=/xxx/x265/lib/pkgconfig
3)配置Ffmpeg时加上下面option,./configure --pkg-config=“pkg-config --static” (其他配置选项),–pkg-config=“pkg-config --static” 参数的作用是告诉编译器在构建过程中使用静态链接的库而不是动态链接的库。动态链接库需要在运行时动态加载,而静态链接库则在编译时被静态地链接到可执行文件中。 - ERROR: libx264 not found
三、QtXlsx
解压缩之后,打开pro直接编译:
将生成的文件拷贝到qt安装目录对应位置
1、include文件夹下文件全部直接拷贝到Qt安装目录的include下
2、lib文件拷贝如下图,拷贝到Qt安装目录的lib下
3、mkspecs/modules下文件拷贝到Qt安装目录的mkspecs/modules下
4、pro中添加QT += xlsx
PS:windows平台编译需要安装 Perl
四、libcurl
1.window编译
libcur下载地址,我下载的版本是curl 7.85.0,使用Qt编译;
解压之后,打开cmd,cd进入解压后文件夹的lib文件夹中,输入命令具体如下:
D:\project\curl-7.85.0\lib>D:\Qt5.14.2\Tools\mingw730_32\bin\mingw32-make.exe -f Makefile.m32
然后编译报错了,错误如下:
…\mingw32\bin\ld.exe: cannot find -lbcrypt
然后使用notepad打开Makefile.m32文件,定位到
DLL_LIBS += -lws2_32 -lbcrypt
把-lbcrypt删除掉就能编译通过了
1.linux编译
Linux版本: (–prefix指定编译输出安装路径 --enable-static 指定编译静态库)
AMD64:
#./buildconf
# ./configure --prefix=/home/lzy/Project/libcurl --with-wolfssl --without-ssl
# make
# make install
ARM版本:(–prefix指定编译输出安装路径 --enable-static 指定编译静态库 CC指定交叉编译工具链)
直接编译编不过,提示fatal error: zlib.h: 没有那个文件或目录,需要先编译zlib
#./configure --prefix=/home/lzy/Project/zlib/
# vi Makefile
# 修改 AR=arm-linux-ar
# 修改 RANLIB=arm-linux-ranlib
# 总之把所有的gcc都改成arm-linux-gcc
# make
# make install
再编译curl
# ./configure --host=arm-linux CC=arm-linux-gcc --prefix=/home/lzy/Project/libcurl --with-wolfssl --without-ssl --with-zlib=/home/lzy/Project/zlib/
# make
# make install
五、X264
1.Linux编译
解压后直接进入目录,输入如下命令
./configure --enable-shared --prefix=/home/lzy/Project/x264-lib
sudo make -j4
sudo make install
六、X265
1.Linux编译
X265下载路径,下载后解压
AMD64: 进入 ./x265_x.x/build/linux 目录下, 然后运行脚本
./make-Makefiles.bash
报错
./make-Makefiles.bash:行3: ccmake:未找到命令
需要安装cmake-curses-gui
sudo apt install cmake-curses-gui
之后就是编译
make -j4
七、libfdk-aac
下载libfdk-aac源码之后,终端cd命令进入文件夹
./autogen.sh
./configure --prefix=$HOME/Project/libfdk_aac-lib/
make -j 4
make install
八、Linux下Qt源码编译
之前交叉编译Qt源码都是直接从网上趴下来直接用的,结果翻车了,编译的Qt库死活打不来摄像头,但是音频输入输出正常,真的是无语了;
摄像头是属于multimedia模块的,默认就会编译该模块,运行也没报错,就是打不开;尝试过编译所有模块,configure不加选项,还是不行;
最终还是一项项研究configure配置项,最后尝试加gstreamer项才行,加了还要再加pulseaudio 项(不然摄像头好了,音频又不行了),使用的是Qt5.12.12的源码,configure配置项具体如下:
./configure -prefix /qtbase/Qt5.12.12 -qt-xcb -opengl -no-openssl -nomake examples -skip qt3d \
-skip qtcharts -skip qtandroidextras -skip qtcharts -skip qtdatavis3d -skip qtdoc -skip qtquickcontrols \
-skip qtquickcontrols2 -skip qtscript -skip qtscxml -skip qtvirtualkeyboard -skip qtsensors -skip qtwayland \
-skip qtspeech -skip qtserialbus -skip qtserialport -skip qtpurchasing -skip qtremoteobjects -skip qtmacextras \
-skip qtnetworkauth -skip qtlocation -skip qtconnectivity -skip qtdeclarative -skip qtwinextras -skip qtx11extras \
-skip qtactiveqt -pulseaudio -gstreamer -recheck-all
提示选择版本,输入o,回车,询问是否接受协议,输入y,回车
gstreamer和pulseaudio 需要安装以下依赖库;其他编译所需依赖就不贴出来了,网上一大堆
sudo apt-get install libgstreamer-plugins-base1.0-dev
sudo apt-get install libpulse-dev
未完待续…