Ubuntu 18.04 wkhtmltopdf源码编译

1.下载代码

创建代码目录,在github上拉取wkhtmltopdf源码仓和编译仓;

mkdir wkhtmltopdf_code
cd wkhtmltopdf_code
git clone git@github.com:wkhtmltopdf/wkhtmltopdf.git
git clone git@github.com:wkhtmltopdf/packaging.git
下载完成后代码仓是wkhtmltopdf目录,编译仓是packaging目录;
代码仓中qt目录为空,还需要补充下载qt代码,在代码仓目录wkhtmltopdf中执行下面的指令,下载qt代码;
git submodule update --init --recursive
至此代码下载完成

注意:github下代码需要配置服务器公钥到github上,这个需要自己用账号配置,下面是操作截图。

image-20230314091927382

2.编译环境配置

使用packaging目录的build的脚本进行编译,但是编译前需要先安装依赖的库;

如果是初始环境 需要先更新软件源:

sudo apt-get update

然后执行下面的指令下载依赖包,这个下载需要几分钟,不同网络环境时间不同;

sudo apt install -y python-yaml docker.io vagrant virtualbox p7zip-full

image-20230314092657664

3. 编译

在packaging目录使用下面的指令进行编译,最后一个参数是源码仓目录;第一次编译需要编QT,比较耗时,大概一两个小时左右;后续如果修改源码,直接使用这个指令编译即可,非首次编译大概需要两三分钟左右;

sudo ./build package-docker buster-amd64 ../wkhtmltopdf

image-20230314093340021

4.运行

编译出来的bin和动态库文件在packaging/targets/buster-amd64/app/bin目录下

直接运行会报错,因为wkhtmltopdf运行依赖jpeg库,需要先安装jpeg;

image-20230314111923706

执行下面的指令安装jpeg

sudo apt-get install libjpeg62

image-20230314112220387

安装完成后再次运行,发现报错version `GLIBC_2.28’ not found,这个原因是Ubuntu18.04默认是glibc2.27版本的,wkhtmltopdf运行依赖2.28版本的glibc,我们安装即可,如果是Ubuntu20.04则不会有这个报错。

可以使用下面的指令查看当前系统支持的glibc版本,可以看到最高到2.27,升级方法使用软件包升级方式;

strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_

image-20230314112502294

修改 /etc/apt/sources.list 在最后加一行

deb http://security.debian.org/debian-security buster/updates main 

然后执行下面的指令,安装更新过程因为网络原因比较慢,等待安装完成即可

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A 54404762BBB6E853
sudo apt update
sudo apt install libc6-dev libc6

安装完成后再查看glibc版本,可以看到已经支持glibc2.28,再次运行程序已经OK了,至此编译运行已完成;

image-20230314134037461

image-20230314134058592

猜你喜欢

转载自blog.csdn.net/qq_38721267/article/details/129526517