---
title: QGIS 3.18.3 移植指南-官方技术文章-鲲鹏社区
description: 本文档介绍了从Windows环境迁移至麒麟OS+鲲鹏处理器环境的操作步骤。
keywords: QGIS,移植指南,官方技术文章,鲲鹏社区,介绍,环境要求,硬件要求,操作系统和软件要求
url: https://www.hikunpeng.com/developer/techArticles/20251022-10?envFlag=1
section: (其他)
---

# QGIS 3.18.3 移植指南-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251022-10?envFlag=1
描述: 本文档介绍了从Windows环境迁移至麒麟OS+鲲鹏处理器环境的操作步骤。
关键词: QGIS,移植指南,官方技术文章,鲲鹏社区,介绍,环境要求,硬件要求,操作系统和软件要求

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

QGIS 3.18.3 移植指南

QGIS 3.18.3 移植指南

软件迁移

发表于 2025/10/22

0

作者 | 陈兵

# 1 介绍

QGIS是基于Qt，使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统，可运行在Linux、Unix、Mac OSX和Windows等平台之上。

本文档介绍了从Windows环境迁移至麒麟OS+鲲鹏处理器环境的操作步骤。

# 2 环境要求

## 硬件要求

| 项目 | 说明 |
| --- | ---|
| 处理器 | 2*鲲鹏920 3226处理器 |
| 内存 | 12*32G 2933MHz |
| 磁盘 | 1*3.6T HDD |
| 网络 | 4*GE（板载） + 4*25GE（TM280） |

## 操作系统和软件要求

| 软件名称 | 版本 |
| --- | ---|
| Kylin | V10 SP3 |
| libspatialindex | 1.9.3 |
| HDF5 | 1.12.1 |
| NETCDF-C | 4.7.4 |
| GDAL | 2.3.3 |
| Botan | 2.17.2 |
| QCA | 2.2.90 |
| PyQt | 5.11.3 |
| Qwt | 6.1.3 |
| QScintilla | 2.11.2 |
| QtKeychain | 0.6.2 |
| QGIS | 3.18.3 |

# 3 编译环境准备

安装相关依赖。

```
yum -y install gcc gcc-c++ proj-devel geos-devel sqlite-devel libspatialite-devel rpmrebuild traceroute fio libaio-devel numactl-devel kernel-debug* java-devel dbus-python-devel python3-numpy python3-pip python3-breathe cmake freexl-devel libwebp-devel sqlite-devel cfitsio-devel unixODBC-devel qt5-qtbase-odbc expat-devel python3-sip-devel python3-pyqt5-sip libgta-devel opencl* lzma-devel zstd-devel libgeotiff-devel pcre-devel curl-devel zlib-devel json-c-devel libclc ocl-icd protobuf-devel qt5-qtwebkit-devel postgresql-devel jasper-devel jasper-utils libkml-devel ocl-icd doxygen nss-devel openssl-devel gsl-devel qt5-qtsvg-devel python3-qscintilla-qt5-devel qscintilla-qt5-devel flex bison libzip-devel qt5-qtserialport-devel qt5-qttools-devel exiv2-devel qt5-qtlocation-devel
```

4 移植步骤

## 4.1 安装libspatialindex

步骤 1 下载libspatialindex 1.9.3安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://github.com/libspatialindex/libspatialindex/archive/refs/tags/1.9.3.tar.gz
```

步骤 2 解压并进入解压后目录。

```
tar -zxvf 1.9.3.tar.gz
cd libspatialindex-1.9.3
```

步骤 3 编译安装。

```
mkdir build && cd build
cmake ..
make -j64 && make install
```

----结束

## 4.2 安装HDF5

步骤 1 下载HDF5 1.12.1安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://github.com/HDFGroup/hdf5/archive/refs/tags/hdf5-1_12_1.tar.gz
```

步骤 2 解压并进入解压后目录。

```
tar -zxvf hdf5-1_12_1.tar.gz
cd hdf5-hdf5-1_12_1/
```

步骤 3 编译安装。

```
./configure --prefix=/opt/hdf5 --build=aarch64-linux --enable-fortan --enable-shared
make -j`nproc`
make install
```

步骤 4 配置环境变量。4.1. 打开“/usr/share/pkgconfig/hdf5.pc”文件。

```
vi /usr/share/pkgconfig/hdf5.pc
```

4.2. 按“i”进入编辑模式，添加如下内容。

```
prefix=/opt/hdf5
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: HDF5
Description: Hierarchical Data Format version 5 library
Version:1.2.1
Libs: -L${libdir} -lhdf5 -lhdf5_hl -lz -lm
Cflags: -I${includedir}
```

4.3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。4.4. 获取编译和链接参数。

```
pkg-config --cflags --libs hdf5
```

4.5. 打开“/etc/profile”文件。

```
vi /etc/profile
```

4.6. 按“i”进入编辑模式，添加如下内容。

```
export PATH=/opt/hdf5/bin:$PATH
export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH
export INCLUDE=/opt/hdf5/include:$INCLUDE
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=/usr/lib64/qt5/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
```

4.7. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。4.8. 使环境变量生效。

```
source /etc/profile
```

----结束

## 4.3 安装NETCDF-C

步骤 1 下载NETCDF-C 4.7.4安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://codeload.github.com/Unidata/netcdf-c/tar.gz/refs/tags/v4.7.4
```

步骤 2 解压并进入解压后目录。

```
tar -zxvf v4.7.4
cd netcdf-c-4.7.4/
```

步骤 3 编译安装。

```
./configure --disable-netcdf-4 --prefix=/opt/netcdf
make -j`nproc`
make install
```

步骤 4 配置环境变量。4.1. 打开“/etc/profile”文件。

```
vi /etc/profile
```

4.2. 按“i”进入编辑模式，添加如下内容。

```
export PATH=/opt/netcdf/bin:$PATH
export INCLUDE=/opt/netcdf/include:$INCLUDE
export LD_LIBRARY_PATH=/opt/netcdf/lib:$LD_LIBRARY_PATH
```

4.3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。4.4. 使环境变量生效。

```
source /etc/profile
```

步骤 5 验证版本。

```
nc-config --all
```

回显中显示对应版本号即生效。----结束

## 4.4 安装GDAL

步骤 1 下载GDAL 2.3.3安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://github.com/OSGeo/gdal/archive/refs/tags/v2.3.3.tar.gz
```

步骤 2 解压并进入解压后目录。

```
tar -xf v2.3.3.tar.gz
cd gdal-2.3.3/gdal
```

步骤 3 编译安装。

```
ln -s /usr/lib64/libOpenCL.so.1.0.0 /usr/lib64/libOpenCL.so
./configure --prefix=/opt/gdal --with-opencl=yes --with-opencl-include="/usr/include" --with-opencl-lib="-L/usr/lib64 -lOpenCL" --with-spatialite=yes
make -j64 && make install
```

步骤 4 配置环境变量。4.1. 打开“/etc/profile”文件。

```
vi /etc/profile
```

4.2. 按“i”进入编辑模式，添加如下内容。

```
export PATH=/opt/gdal/bin:$PATH
export INCLUDE=/opt/gdal/include:$INCLUDE
export LD_LIBRARY_PATH=/opt/gdal/lib:$LD_LIBRARY_PATH
```

4.3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。4.4. 使环境变量生效。

```
source /etc/profile
```

步骤 5 验证版本。

```
gdal-config --version
```

返回如下信息，则表示GDAL 2.3.3版本安装成功。

----结束

## 4.5 安装Botan

步骤 1 下载Botan 2.17.2安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://github.com/randombit/botan/archive/refs/tags/2.17.2.tar.gz
```

步骤 2 解压并进入解压后目录。

```
tar -zxvf 2.17.2.tar.gz
cd botan-2.17.2
```

步骤 3 编译安装。

```
python3 configure.py
make -j64 && make install
```

----结束

## 4.6 安装QCA

步骤 1 下载QCA 2.2.90安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://github.com/KDE/qca/archive/refs/tags/v2.2.90.tar.gz
```

步骤 2 解压并进入解压目录。

```
tar xf v2.2.90.tar.gz
cd qca-2.2.90
```

步骤 3 编译安装。

```
mkdir build && cd build
cmake ..
make -j64 && make install
```

----结束

## 4.7 安装PyQt

步骤 1 下载PyQt 5.11.3安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.11.3/PyQt5_gpl-5.11.3.zip/download
```

步骤 2 解压并进入解压后目录。

```
unzip PyQt5_gpl-5.11.3.zip
cd PyQt5_gpl-5.11.3
```

步骤 3 安装PyQt。

```
python3 configure.py
```

输入yes然后回车，执行以下命令编译安装，时间可能较长。

```
make -j`nproc` && make install
```

----结束

## 4.8 安装Qwt

步骤 1 下载Qwt 6.1.3安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://codeload.github.com/opencor/qwt/tar.gz/refs/tags/v6.1.3
```

步骤 2 解压并进入解压后目录。

```
tar -xf v6.1.3
cd qwt-6.1.3
```

步骤 3 编译安装。

```
qmake qwt.pro
make -j64 && make install
```

----结束

## 4.9 安装QScintilla

步骤 1 下载QScintilla 2.11.2安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.11.2/QScintilla_gpl-2.11.2.tar.gz
```

步骤 2 解压并进入解压后目录。

```
tar xf QScintilla_gpl-2.11.2.tar.gz
cd QScintilla_gpl-2.11.2
```

步骤 3 编译安装。

```
cd Qt4Qt5
qmake qscintilla.pro
make -j64 && make install
cd ../Python/
python3 configure.py --pyqt=PyQt5
make -j64 && make install
```

----结束

## 4.10 安装QtKeychain

步骤 1 下载QtKeychain 0.6.2安装包，并上传至服务器“/home”目录。

```
cd /home
wget https://github.com/frankosterfeld/qtkeychain/archive/refs/tags/v0.6.2.tar.gz
```

步骤 2 解压并进入解压后目录。

```
tar -xf v0.6.2.tar.gz
cd qtkeychain-0.6.2
```

步骤 3 编译安装。

```
mkdir build && cd build
cmake ..
make -j`nproc` && make install
```

----结束

## 4.11 安装QGIS

步骤 1 准备开发环境。

```
mkdir -p /home/dev/cpp
cd /home/dev/cpp
```

步骤 2 下载QGIS 3.18.3源代码，解压并进入解压后目录。

```
wget https://github.com/qgis/QGIS/archive/refs/tags/final-3_18_3.tar.gz
tar xf final-3_18_3.tar.gz
cd QGIS-final-3_18_3
```

步骤 3 编译安装。

```
mkdir build && cd build
ln -s /usr/lib64/libexiv2.so libexiv2.so.26
cmake .. -DGDAL_INCLUDE_DIR=/opt/gdal/include -DGDAL_LIBRARY=/opt/gdal/lib/libgdal.so -DOpenCL_LIBRARY=/usr/lib64/libOpenCL.so -DNETCDF_LIBRARY=/opt/netcdf/lib/libnetcdf.so -DProtobuf_LITE_LIBRARY=/usr/lib64/libprotobuf.so
make -j64 && make install
```

----结束

# 5 测试验证

- 无图形界面输入qgis -v查看版本输出是否正常。
- 有图形界面输入qgis查看软件启动是否正常。

# 6 故障排除

## 6.1 configure脚本检测不到依赖的解决方法

### 问题现象描述

在源码编译GDAL的过程中，使用configure脚本时会出现找不到HDF5、PDAL、OpenCL等依赖的情况，但是这些软件已经安装成功，并且库、头文件、执行文件都已经添加至环境变量中。

### 关键过程、根本原因分析

1. 首先查看configure脚本打印的依赖not found信息，发现提到pkg-config，推测脚本使用了pkg-config程序进行依赖查找，而pkg-config通过环境变量中PKG_CONFIG_PATH路径下的xxx.pc文件进行软件管理。某些软件在安装时未去pkg-config进行注册或者注册路径不在PKG_CONFIG_PATH变量中，所以会导致部分依赖软件找不到。2. 使用pkg-config查找缺失软件的信息，发现无法找到。通过find / -name <name>.pc查找是否存在该软件的.pc文件，发现部分存在，部分不存在。确认部分依赖未找到是由于缺少.pc文件，或者是.pc文件所在路径并没有配置到PKG_CONFIG_PATH环境变量。3. 部分缺失软件打印日志未提及pkg-config，所以与.pc文件无关。查看configure的help信息，发现与软件依赖相关的参数，包括缺失软件/库文件的路径指定参数，推测可以通过手动指定的方式进行依赖查找。

### 结论、解决方案及效果

步骤 1 对于使用find命令可以查找到的.pc文件，可将该文件路径添加到环境变量PKG_CONFIG_PATH（在 `/etc/profile` 中配置），然后激活环境变量，再使用pkg-config查找该软件，发现可以找到，调用GDAL的configure脚本发现也可以找到了。步骤 2 对于.pc文件找不到的情况，可以手动编写.pc文件，.pc文件中内容格式基本都是一致的，如下：

```
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: HDF5
Description: Hierarchical Data Format 5 (HDF5)
Version: 1.12.0
Requires:
Libs: -L${libdir} -lhdf5 -lhdf5_hl
Cflags: -I${includedir}
```

可以使用大模型进行生成，更改其中的各个路径即可。然后将pc文件放在pkg-config可查找的路径下。再用configure脚本查找发现成功找到依赖。就此通过pkg-config查找的依赖全部找到。步骤 3 对于像OpenCL这样的依赖缺失，可先将configure脚本帮助信息中相关的选项提取出来，然后对各个路径进行手动输入，例如lib路径会让指定文件夹或直接指定到具体的so库，将其指定完毕后发现也能找到了，就此所有依赖查找问题全部解决。----结束

## 6.2 cmake时找不到具体的软件的解决方法

### 问题现象描述

在进行cmake时，有时会报错找不到软件。

### 关键过程、根本原因分析

1. 查看CMakeLists.txt，在其中查找缺失软件名相关的内容，发现缺失的软件都是在一个find_package函数中出现，怀疑是该函数查找出现了问题。2. 查找该函数的搜索原理，发现其查找软件时会使用相对应的Findxxx.cmke脚本文件进行相关路径查找。3. 使用find命令查找缺失软件对应的cmake文件，确实发现了正在安装软件的目录下有一个cmake目录，该目录中就有着对应的cmake文件，打开对应文件发现其都是使用shell命令进行软件路径的查找，所以只要修改查找逻辑即可找到对应的软件。

### 结论、解决方案及效果

Findxxx.cmake文件目的常常都是找到对应软件的头文件、库文件，所以直接将路径赋给相应的变量即可，修改过后发现cmake不再报这些包的缺失问题。

## 6.3 make显示符号或引用未定义的解决方法

### 问题现象描述

在安装如qscintilla等软件的时候会报错显示某些函数名未声明等信息。

### 关键过程、根本原因分析

发现存在这种问题先去分析报错的是哪个文件，如果是lib文件，如QScintilla安装时报错libqtkeychain.so找不到一些标识符，先去查找该库是属于哪个软件的，发现是QtKeychain。发现该库属于QtKeychain，Qt的源码中查找未声明的符号，发现该符号在Qt 5.15以上才有，而本次使用的是Qt 5.11.2，所以大概率是QtKeychain安装版本过高。

### 结论、解决方案及效果

在GitHub中找一个低版本的QtKeychain进行安装，安装后再去安装QScintilla，发现不再报未声明的错误。

本页内容
