提示:该步骤不是一定要操作的步骤,可跳过该步骤;但更换成“阿里源”后,采用apt-get安装软件会快很多,你也可以更换其他的源!
修改你的source.list文件
gedit /etc/apt/source.list
在编辑器中,把里面的内容替换为“阿里源”提供的内容,保存source.list,关闭编辑器。“阿里源”内容如下:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
效果如下:
注意事项:
更新本地的包清单(根据source.list清单产生的缓存,以后去阿里源下载包):
visitor@visitor-machine:~$ apt update
参看INSTALL文件的步骤, 教程中会教我们如何安装依赖库;官方列出了5个发布版本的库,我这里用的Ubuntu 18.04 (bionic),对应的,也安装这个版本的依赖!
如下贴出bionic版本安装依赖的命令:
apt-get install bison ca-certificates ccache cmake cmake-curses-gui dh-python doxygen expect flex gdal-bin git graphviz grass-dev libexiv2-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl-dev libpq-dev libproj-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 lighttpd locales ninja-build ocl-icd-opencl-dev opencl-headers pkg-config poppler-utils pyqt5-dev pyqt5-dev-tools pyqt5.qsci-dev python3-all-dev 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.qtwebkit python3-requests python3-sip python3-sip-dev python3-six python3-termcolor python3-tz python3-yaml qt3d-assimpsceneimport-plugin qt3d-defaultgeometryloader-plugin qt3d-gltfsceneio-plugin qt3d-scene2d-plugin qt3d5-dev qt5-default qt5keychain-dev qtbase5-dev qtbase5-private-dev qtpositioning5-dev qttools5-dev qttools5-dev-tools saga spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb
注意:
官网上找到的编译教程都会比较新,可能不适用于你下载的源码包。但我们可以在源码包目录下的doc文件夹里,找到对应当前qigs版本的编译文档,该文档名字为INSALL.html。
cd /usr/local/bin
sudo ln -s /usr/bin/ccache gcc
sudo ln -s /usr/bin/ccache g++
作为一种惯例,我在$HOME/dev/下做我所有的开发工作,所以在这种情况下,我们将为c++开发工作创建一个工作环境,就像这样:
mkdir -p ${HOME}/dev/cpp
cd ${HOME}/dev/cpp
对于后面的所有的操作,将设置为此目录路径。
参照INSTALL说法,有如下2种检出代码的方式:
1. Anonymous Checkout (没有提交权限,就用这种)
cd ${HOME}/dev/cpp
git clone git://github.com/qgis/QGIS.git
2. Developer Checkout (有代码提交权限,就用这种)
cd ${HOME}/dev/cpp
git clone [email protected]:qgis/QGIS.git
对于以上2种方法,本人为了方便,直接将源码包拷贝到目标目录下解压。
创建apps目录
root@计算机名:/root# mkdir apps
创建build-master目录(将会用于执行ccmake)
root@计算机名:/root/QGIS# mkdir build-master
root@计算机名:/root/QGIS# cd build-master
下面的两个点表示上一级目录:
root@计算机名:/root/QGIS/build-master# ccmake ..
注意:make -jX,这里的X填写的是数字,表示编译时用几个核。根据你的平台设置,这可以大大加快构建时间。
# 根据上一步生成的makefile,使用make命令编译代码
root/QGIS/build-master# make -j4
# 编译完后你可以直接运行如下命令启动主程序
# 根据上一步生成的makefile,使用make命令编译代码
root@darling-G7:/root/QGIS/build-master# make -j4
# 编译完后你可以直接运行如下命令启动主程序
root@darling-G7:/root/QGIS/build-master# ./output/bin/qgis
# 若执行的时候,你发现动态链接库找不到;请参考问题清单的Q4、Q5;这里只简要说处理方法
# 用如下命令把生成的lib动态链接库,加入到环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/QGIS/build-master/output/lib/
# 使用make命令安装到系统中
# 这个命令会安装到/root/apps目录,这是由上一步生成makefile时,指定的CMAKE_INSTALL_PREFIX值
root@darling-G7:/root/QGIS/build-master# make install
若执行后提示,找不到某个*.so.*文件,如libqgis_app.so.3.10.5; 可使用locate进行定位。
root@计算机名:~/build-master/output/bin# locate libqgis_app.so.3.10.5
/root/build-master/output/lib/libqgis_app.so.3.10.5
这说明本系统中有该动态链接库,只是当前程序找不到该库;这是因为这个库文件不在环境变量中,所以程序找不到;为了解决这个问题,你的控制台需要执行如下命令:
# 临时地把qgis编译生成的库文件,加到动态链接库的变量中
# 你生成的动态链接库目录路径不同,注意更改!
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/apps/lib/
文章参考:https://blog.csdn.net/DanyelleG/article/details/106454423