Ubuntu系统编译调试QGIS源码保姆级教程

这篇具有很好参考价值的文章主要介绍了Ubuntu系统编译调试QGIS源码保姆级教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在之前的文章中,我详细介绍了怎么在Windows下编译QGIS源码,也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式,想要分析源码,Debug模式下的“断点调试”肯定是少不了的,虽然这两种模式虽然也能做到调试程序,但是总有种种不足,例如,因为代码是优化过的,某些调试操作可能会有所不同或略显困难。另外由于某些变量可能被优化掉,它们在调试过程中可能不可见等等。所以,为了调试程序更方便,决定在Unbuntu下编译一个Debug模式的QGIS。

由于上一篇在Windows下编译的是QGIS3.18.3版本,因此本次在Ubuntu上也选择编译该版本。经测试,在Ubuntu 20.04上面编译比较顺利。

主要环境是:

  • Ubuntu 20.04
  • QT 5.12.8
  • Qgis 3.18.3
  • CMake 3.16.3
  • Flex 2.6.4
  • Bison 3.5.1
  • Python 3.8.5

除了Ubuntu和QGIS,其他的都不需要刻意单独下载,按照教程来即可。

安装虚拟机

在Ubuntu 20.04镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/
使用此镜像新建一个虚拟机,分配的磁盘不要太小,之前分配了20G的磁盘空间,结果根本不够用,于是我后面分配了60G的空间。
安装完毕如下:
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis

配置开发环境

建议将不同版本的QGIS源代码用单独的目录存放,打开命令行终端,输入如下命令,建立工作目录并切换到该目录。

mkdir -p ${HOME}/dev/QGIS_318
cd ${HOME}/dev/QGIS_318

下载源码:

wget https://github.com/qgis/QGIS/archive/final-3_18_3.tar.gz

如果下载速度慢的话,可以关注在下面评论发你一份
下载完毕后解压:

tar -zxf QGIS-final-3_18_3.tar.gz

由于Ubuntu 20.04 默认没有安装g++编译器,因此需要安装一下,执行下面的两条命令

sudo apt-get update
sudo apt-get install build-essential

安装依赖库:

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.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 xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb

设置ccache(可选,推荐设置,能加快编译速度):

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

编译源码

上面的操作进行完毕之后,有两种编译方式,我将分别进行讲解。

Qt Creator编译(慢)

由于我们已经安装了QT,但是并没有安装Qt Creator,因此先进行安装:

sudo apt-get install qtcreator

安装完毕后,打开Qt Creator:

qtcreator

Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
然后打开项目,选择源码目录下的CMakeLists.txt文件
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
然后在项目配置页面,点开详情,选择模式,由于我们的目的是调试程序,所以我们只选择Debug模式即可。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
点击左侧的“桌面”,在右侧可以配置我们的CMake选项:
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
然后点击“Configure Project”,生成项目。

默认配置中,QGIS的三维模块和QGIS3.18新增支持的内存数据库SAP HANA模块并没有启用,所以编译完成后得到的QGIS不包含三维地图浏览和SAP HANA数据库存储功能,如果需要使用这两个模块,需将WITH_3D和WITH_HANA设置为“ON”。

然后构建项目即可。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
构建的过程要耗费很长时间,可以去看个小视频放松一下~
编译完成后,就可以进行断点调试了。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis

命令行编译(快)

为了防止和上面的编译方式产生冲突,我们新建个QGIS_318_Command文件夹:

mkdir -p ${HOME}/dev/QGIS_318_Command
cd ${HOME}/dev/QGIS_318_Command

然后进入源码压缩包存放的目录,把源码解压到新建的文件夹中:

tar -zxvf QGIS-final-3_18_3.tar.gz -C ${HOME}/dev/QGIS_318_Command

我们进入到源码目录,新建一个build文件夹,这里是用来存放编译后产生的文件的:

cd ${HOME}/dev/QGIS_318_Command/QGIS-final-3_18_3
mkdir build
cd build

执行CMake:

ccmake ..

Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
按c继续
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
按e继续
把BUILD的类型改为Debug,其他的选项可以自己根据需要修改。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
每次修改完都要再次输入c,进行Configure,如果出现g的按键标志,就可以按g进行Generate。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
Generate完成后将自动退出ccmake界面,回到命令行终端。输入“make”命令或者“make -jx”命令,x代表使用的处理器个数,可以加速编译(注意不要超过虚拟机设置的处理器个数和内核个数的乘积),回车,开始编译可执行文件:
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
又将是漫长的等待,刷会小视频放松一下吧~
成功之后,就可以输入下面的命令进行运行啦!

./output/bin/qgis

Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
成功运行出QGIS。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
但是我们的目的是调试QGIS,该如何进行调试呢?
首先,我们需要安装Qt Creator,由于QT环境我们在安装依赖的时候已经安装好了,这里我们只需要安装Qt Creator。输入下面的命令进行安装:

sudo apt-get install qtcreator

安装完毕我们打开Qt Creator:

qtcreator

打开项目,选择源码目录下面的CMakeLists.txt文件打开。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
打开后,我们只需要选择build目录下的Debug模式,因为这个我们之前编译好了,不需要再重新编译。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
然后点击“Configure Project”,生成项目。
生成项目后,可以正常运行。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
调试项目也是正常的。
Ubuntu系统编译调试QGIS源码保姆级教程,QGIS,软件使用和环境搭建,ubuntu,linux,qgis
到此,教程结束。
注意:调试项目需要的处理器开销比较大,请务必给虚拟机多设置几个处理器。文章来源地址https://www.toymoban.com/news/detail-716917.html

到了这里,关于Ubuntu系统编译调试QGIS源码保姆级教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RMers电脑装Ubuntu22.04,Windows和Ubuntu双系统(保姆级教程!)

    方法一:企业开源和Linux | Ubuntu               点击下载               点击下载Ubuntu桌面板               找到Ubuntu22.04版本               下载 方法二:magnet:?xt=urn:btih:75439D5DE343999AB377C617C2C647902956E282               点击次链接直接下载 1、准备一个空U盘 2、下载烧录软

    2024年02月03日
    浏览(59)
  • Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】

    Virtual Box 版本: 7.0.6 r155176 (Qt5.15.2) Ubuntu 版本:20.04.6 (amd64, Desktop LiveDVD) 下载后解压,看一下 README 文件指导安装, 需要安装环境依赖, 或者直接安装 GNU 集合, 报错,这是不同系统编码格式导致, 解决:重置文件编码, 报错 cmake: not found ,需要安装 Cmake,   报错 Could

    2024年02月03日
    浏览(51)
  • 原神3.2服务端架设服务器搭建教程ubuntu系统(保姆级)

    原神 3.2服务端架设服务器 搭建教程 ubuntu系统 ( 保姆级 ) 大家好,我是艾西今天跟大家分享下 原神 3.2服务端架设ubuntu系统实操教程 准备阶段 : 服务器一台 32h32g起、服务端、客户端、服务器装Ubuntu20.04系统 特别强调:java17直接放在C:Program Files目录下即可 开始操作跟上节

    2024年02月05日
    浏览(46)
  • 【C语言】通讯录系统实现 (保姆级教程,附源码)

    目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1、制作菜单menu函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、删除联系人DelContact函数

    2024年02月08日
    浏览(35)
  • Linux云端部署stable diffusion保姆级教程——基于腾讯云,ubuntu系统

    #本教程也参考了其他教程,这个是整合版,带#的是注释,不带#的就是命令,需要一行一行复制,然后按回车执行 #最好选择境外Linux,网络环境好,境内需要魔法,下面开始—— #从控制台登录,最好是OrcaTerm登录,复制比较方便 #第一步下载miniconda安装包 #第二步安装 #第三

    2024年02月13日
    浏览(41)
  • ubuntu系统安装配置gitlab+Jenkins+发布持续集成持续部署保姆级教程。

    1、服务器环境 名称                              系统                                   IP                              备注 gitlab               ubuntu20.04.2图形化          192.168.26.130        要求有6G的内存 Jenkins           Ubuntu20.04.2图形化          1

    2024年04月26日
    浏览(46)
  • 保姆级教程:树莓派4B 安装Ubuntu 22.04 Server操作系统

    1、在树莓派4B上安装Ubuntu 22.04 Desktop操作系统,使用Putty初始化远程访问更新系统,最后实现Ubuntu操作系统的远程桌面。 2、动手操作完,能熟悉了解树莓派操作系统的完整安装过程,熟悉相关的工具软件。 3、能够学会使用最简单的Ubuntu OS操作命令。 硬件: 1)主角:树莓派

    2023年04月19日
    浏览(97)
  • 【C语言】通讯录管理系统(保姆级教程+内含源码)

    目录 C系列文章目录 前言 一,模块化编程 二,系统框架构建 1.成员信息的创建 2.菜单实现 3.系统功能声明 三、系统功能实现 1.初始化通讯录 2.增加联系人 3.显示所有联系人 4.根据姓名查找位置 5.删除指定联系人 6.查找指定联系人 7.修改指定联系人 8.清空所有联系人 9.按照名

    2024年02月08日
    浏览(41)
  • Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130533941 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Linux驱动开发笔记(一

    2024年02月06日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包