Linux部分开源库编译


前言

记录一下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记录:

  1. arm板子上直接编译x265报错,pixel.cpp的函数pysCost_pp处报内部错误,段错误,不知道咋解决
  2. 执行完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

部分报错:

  1. 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” 参数的作用是告诉编译器在构建过程中使用静态链接的库而不是动态链接的库。动态链接库需要在运行时动态加载,而静态链接库则在编译时被静态地链接到可执行文件中。
  2. 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

未完待续…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li_Zhi_Yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值