ubuntu18.04下编译qigs3.10.5

系统环境
Ubuntu 18.04.4 LTS
QGIS代码版本 : QGIS-3.10.5

 

更换下载源


提示:该步骤不是一定要操作的步骤,可跳过该步骤;但更换成“阿里源”后,采用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

 

效果如下:

ubuntu18.04下编译qigs3.10.5_第1张图片

 

注意事项:

  1. Ubuntu不同版本对应不同代号,当前系统使用的是ubuntu 18.04对应代号是Bionic,所以更新源也得用对应版本。网上可查询Ubuntu 各版本代号。
  2. 更新的时候,要管理员权限!可用su root切换到管理用户。
  3. ubuntu用户第一次不知道root账户,请用sudo passwd root进行修改密码。

更新本地的包清单(根据source.list清单产生的缓存,以后去阿里源下载包): 

visitor@visitor-machine:~$ apt update

 

编译步骤

1.安装构建依赖(Install build dependencies)

参看INSTALL文件的步骤, 教程中会教我们如何安装依赖库;官方列出了5个发布版本的库,我这里用的Ubuntu 18.04 (bionic),对应的,也安装这个版本的依赖!

ubuntu18.04下编译qigs3.10.5_第2张图片

如下贴出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

2.设置ccache(可选项,推荐使用) (用于加快编译速度)

cd /usr/local/bin
sudo ln -s /usr/bin/ccache gcc
sudo ln -s /usr/bin/ccache g++

3.准备您的开发环境

作为一种惯例,我在$HOME/dev/下做我所有的开发工作,所以在这种情况下,我们将为c++开发工作创建一个工作环境,就像这样:

mkdir -p ${HOME}/dev/cpp

cd ${HOME}/dev/cpp

对于后面的所有的操作,将设置为此目录路径。

 

4.下载源代码(Check out the QGIS Source Code)

参照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种方法,本人为了方便,直接将源码包拷贝到目标目录下解压。

 

5.开始编译(Starting the compile)

5.1 首先说明下我编译的规划(这一步中,请自行将QGIS的代码解压出来!)

  • 代码存放路径:/root/QGIS  (这里面看得到INSTALL说明文档)
  • makefile存放路径:/root/QGIS/build-master
  • 安装时的路径:/root/apps

5.2 创建对应目录

创建apps目录

root@计算机名:/root# mkdir apps

创建build-master目录(将会用于执行ccmake)

root@计算机名:/root/QGIS# mkdir build-master

5.3 使用ccmake生成makefile文件

root@计算机名:/root/QGIS# cd build-master

下面的两个点表示上一级目录:

root@计算机名:/root/QGIS/build-master# ccmake ..
  • 当您运行ccmake时(请注意必须输入..),将出现一个菜单,您可以在其中配置构建参数;
  • 如果希望QGIS具有调试功能,则将CMAKE_BUILD_TYPE设置为Debug
  • 如果你没有root用户访问权限,或不想覆盖现有的QGIS安装,请设置CMAKE_INSTALL_PREFIX,程序将安装到此目录(我通常使用$ {HOME} / apps);
  • 配置好后,现在可以按c键去配置,按e去编辑参数改掉这些错误,按g可以生成makefile
  • 请注意,有时需要多次按下“ c”,然后才能使用“ g”选项;
  • 完成“ g”的生成后,按“ q”退出ccmake交互式对话框;
  • 正常执行完后,你会发现这个目录中有很多makefile文件。

5.4 使用make命令开始编译

注意: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

 Ubuntu下遇到的错误

若执行后提示,找不到某个*.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

你可能感兴趣的:(ubuntu18.04下编译qigs3.10.5)