从2月19日开始打包,到2月23日,QGIS 3.18的安装包经过漫长的4天才完成打包,在这等待的4天里,大家有没有像我一样萌生出自己动手编译源代码的想法呢?今天想分享的是QGIS3.18源代码编译的过程,并在最后整理出编译过程遇到的错误和解决办法。
01 编译环境
-
操作系统
本次编译选用Ubuntu 20.04操作系统,理由如下:
从第一个版本开始,QGIS大部分开发是在Linux环境下进行的,与Linux系统的兼容性更好(实际上,我在Windows系统也试着编译过QGIS源码,编译环境的安装、编译过程难度比在Linux系统大得多);
Ubuntu 20.04是一个与Windows系统相类似的、以桌面应用为主的Linux发行版本,对Linux新手来说比较符合操作习惯、易于上手。而且 20.04版本是Ubuntu的长期支持(LTS)版本,社区可提供5年的支持,比最新的20.10版稳定性和成熟度好很多。
-
其他编译环境
CMake:3.16.3
Flex :2.6.4
Bison:3.5.1
Python:3.8.5
02 下载源代码
建议将不同版本的QGIS源代码用单独的目录存放,打开命令行终端,输入如下命令,建立工作目录并切换到该目录:
mkdir -p ${HOME}/dev/QGIS
cd ${HOME}/dev/QGIS
下载源代码:
wget https://github.com/qgis/QGIS/archive/final-3_18_0.tar.gz
解压缩下载回来的代码包:
tar -zxf QGIS-final-3_18_0.tar.gz
03 安装依赖库
从Ubuntu系统的左下角的开始菜单打开一个命令行终端,参照github的“Building QGIS from source - step by step”文档(https://github.com/qgis/QGIS/blob/master/INSTALL.md),输入如下命令安装QGIS编译需要的依赖库:
sudo apt-get install bison ca-certificates ccache cmake cmake-curses-gui dh-python doxygen expect flex flip gdal-bin git graphviz grass-dev libexiv2-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl-dev libpdal-dev libpq-dev libproj-dev libprotobuf-dev libqca-qt5-2-dev libqca-qt5-2-plugins libqscintilla2-qt5-dev libqt5opengl5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5webkit5-dev libqt5xmlpatterns5-dev libqwt-qt5-dev libspatialindex-dev libspatialite-dev libsqlite3-dev libsqlite3-mod-spatialite libyaml-tiny-perl libzip-dev libzstd-dev lighttpd locales ninja-build ocl-icd-opencl-dev opencl-headers pdal pkg-config poppler-utils protobuf-compiler pyqt5-dev pyqt5-dev-tools pyqt5.qsci-dev python3-all-dev python3-autopep8 python3-dateutil python3-dev python3-future python3-gdal python3-httplib2 python3-jinja2 python3-lxml python3-markupsafe python3-mock python3-nose2 python3-owslib python3-plotly python3-psycopg2 python3-pygments python3-pyproj python3-pyqt5 python3-pyqt5.qsci python3-pyqt5.qtsql python3-pyqt5.qtsvg python3-pyqt5.qt