一、介绍
QGIS 是一个免费、开源、跨平台(lin/win/mac)地理信息系统(GIS)。
关于QGIS的更多信息请访问QGIS相关网址
开发语言:C++、Python
一句话描述:地理信息系统
开源协议:GPL-2.0
二、环境要求
硬件要求
操作系统要求
软件要求
三、移植规划
本章节给出在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。
四、配置编译环境
前提条件:
使用SFTP工具将各安装包上传至服务器对应目录下。
服务器需接通网络。
4.1安装相关依赖
1 使用PuTTY工具,以root用户登录服务器。
2 执行以下命令使用yum安装相关依赖。
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 qt5-qtbase-devel expat-devel python3-sip-devel python3-pyqt5-sip libgta-devel opencl* zstd-devel libgeotiff-devel pcre-devel curl-devel zlib-devel json-c-devel libclc ocl-icd protobuf-devel qt5-qtwebkit-devel postgresql-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 python3-qt5-devel qca-qt5-devel mesa-libGLU-devel proj-nad fftw-devel uriparser-devel libjpeg-turbo-devel openjpeg2-devel minizip-devel netcdf-devel hdf5-devel boost-devel environment-modules wxWidgets-devel autoconf automake libtool
4.2开启X11可视化界面
1 执行以下命令使用yum安装X11组件。
yum -y xorg-x11-xauth xorg-x11-server-utils xorg-x11-server-Xnest libXtst
2 执行以下命令修改sshd_config。
vim /etc/ssh/sshd_config
将将X11-Forwarding 这一行设为yes
3 执行以下命令重启服务sshd.service。
systemctl restart sshd.service
4.3安装botan-2.17.2
1 使用PuTTY工具,以root用户重新登录服务器。
2 执行以下命令下载源码包。
mkdir -p /path/to/package
cd /path/to/package
wget cid:link_6 -O botan-2.17.2.tar.gz
3 执行以下命令解压并生成Makefile。
mkdir -p /path/to/source
cd /path/to/source
tar xf /path/to/package/botan-2.17.2.tar.gz
cd botan-2.17.2
python3 configure.py
4 执行以下命令修改Makefile。
vim Makefile
修改第58行中的--prefix和--bindir和--libdir。
修改前:
$(PYTHON_EXE) $(SCRIPTS_DIR)/install.py --prefix="/usr/local" --build-dir="build" --bindir=/usr/local/bin --libdir=/usr/local/lib --docdir=share/doc --includedir=include
修改后:
$(PYTHON_EXE) $(SCRIPTS_DIR)/install.py --prefix="/path/to/install/botan-2.17.2" --build-dir="build" --bindir=/path/to/install/botan-2.17.2/bin --libdir=/path/to/install/botan-2.17.2/lib --docdir=share/doc --includedir=include
5 执行以下命令编译安装。
make -j
make install
6 执行以下命令修改botan-2.pc。
vim /path/to/install/botan-2.17.2/lib/pkgconfig/botan-2.pc
修改第1行和第3行。
修改前:
prefix=/usr/local
libdir=/usr/local/lib
修改后:
prefix=/path/to/install/botan-2.17.2
libdir=/path/to/install/botan-2.17.2/lib
7 执行以下命令编写modulefile文件。
mkdir -p /path/to/modulefile
cd /path/to/modulefile
cat << EOF > botan-2.17.2
#%Module1.0
set prefix /path/to/install/botan-2.17.2
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
8 执行以下命令加载modulefile。
module use /path/to/modulefile
module add botan-2.17.2
4.4安装jasper-1.900.2
1 执行以下命令下载源码包。
cd /path/to/package
wget https://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.2.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/jasper-1.900.2.tar.gz
cd jasper-1.900.2
./configure --prefix=/path/to/install/jasper-1.900.2
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > jasper-1.900.2
#%Module1.0
set prefix /path/to/install/jasper-1.900.2
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add jasper-1.900.2
4.5安装libkml-1.3.0
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_8 -O libkml-1.3.0.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/libkml-1.3.0.tar.gz
cd libkml-1.3.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/libkml-1.3.0
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > libkml-1.3.0
#%Module1.0
set prefix /path/to/install/libkml-1.3.0
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add libkml-1.3.0
4.6安装libspatialindex-1.9.3
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_1 -O libspatialindex-1.9.3.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/libspatialindex-1.9.3.tar.gz
cd libspatialindex-1.9.3
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/libspatialindex-1.9.3
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > libspatialindex-1.9.3
#%Module1.0
set prefix /path/to/install/libspatialindex-1.9.3
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add libspatialindex-1.9.3
4.7安装laz-perf-3.4.0
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_7 -O laz-perf-3.4.0.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/laz-perf-3.4.0.tar.gz
cd laz-perf-3.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/laz-perf-3.4.0
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > laz-perf-3.4.0
#%Module1.0
set prefix /path/to/install/laz-perf-3.4.0
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add laz-perf-3.4.0
4.8安装qtkeychain-0.6.2
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_2 -O qtkeychain-v0.6.2.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/qtkeychain-v0.6.2.tar.gz
cd qtkeychain-0.6.2
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/qtkeychain-0.6.2
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > qtkeychain-0.6.2
#%Module1.0
set prefix /path/to/install/qtkeychain-0.6.2
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib64
prepend-path LIBRARY_PATH \$prefix/lib64
EOF
5 执行以下命令加载modulefile。
module add qtkeychain-0.6.2
4.9安装qwt-6.1.3
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_9 -O qwt-v6.1.3.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/qtkeychain-v0.6.2.tar.gz
cd qwt-6.1.3
qmake-qt5 qwt.pro
3 修改下面文件,引入#include <QPainterPath>。
./src/qwt_painter_command.h
./src/qwt_null_paintdevice.cpp
./src/qwt_painter.cpp
./src/qwt_widget_overlay.cpp
./src/qwt_plot_renderer.cpp
./src/qwt_plot_panner.cpp
./src/qwt_plot_glcanvas.cpp
./src/qwt_compass_rose.cpp
./src/qwt_dial_needle.cpp
./src/moc/moc_qwt_plot_glcanvas.cpp
在以上文件中引入头文件#include <QPainterPath>
说明:openEuler-22.03-SP2中内嵌的QT5是5.12版本,则需修改上述文件,若使用QT5.11版本,则编译qwt6.1.3时无需修改上述文件。
4 执行以下命令编译安装。
make -j
make INSTALL_ROOT=/path/to/install/qwt-6.1.3 install
5 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > qwt-6.1.3
#%Module1.0
set prefix /path/to/install/qwt-6.1.3
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
6 执行以下命令加载modulefile。
module add qwt-6.1.3
4.10安装gdal-3.8.1
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_10 -O gdal-v3.8.1.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/gdal-v3.8.1.tar.gz
cd gdal-3.8.1
ln -s /usr/lib64/libOpenCL.so.1.0.0 /usr/lib64/libOpenCL.so
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/gdal-3.8.1
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > gdal-3.8.1
#%Module1.0
set prefix /path/to/install/gdal-3.8.1
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib64
prepend-path LIBRARY_PATH \$prefix/lib64
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add gdal-3.8.1
4.11安装fcgi2-2.4.2
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_4 -O fcgi2-2.4.2.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/fcgi2-2.4.2.tar.gz
cd fcgi2-2.4.2
./configure --prefix=/path/to/install/fcgi2-2.4.2
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > fcgi2-2.4.2
#%Module1.0
set prefix /path/to/install/fcgi2-2.4.2
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add fcgi2-2.4.2
4.12安装grass-7.8.6
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_11 -O grass-7.8.6.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/grass-7.8.6.tar.gz
cd grass-7.8.6
./configure --prefix=/path/to/install/grass-7.8.6 --with-freetype-includes=/usr/include/freetype2 --with-opencl --with-blas --with-lapack --with-geos=/usr/bin/geos-config --with-netcdf=/usr/bin/nc-config
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > grass-7.8.6
#%Module1.0
set prefix /path/to/install/grass-7.8.6
prepend-path PATH \$prefix/grass-7.8.6/bin:\$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add grass-7.8.6
4.13安装saga-2.3.1
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_3 -O saga-gis-release-2-3-1.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/saga-gis-release-2-3-1.tar.gz
cd saga-gis-release-2-3-1/saga-gis
autoreconf -i
./configure --prefix=/path/to/install/saga-2.3.1
3 执行以下命令下载proj两个头文件
wget https://raw.githubusercontent.com/OSGeo/PROJ/4.9/src/projects.h -O /usr/include/projects.h
wget https://raw.githubusercontent.com/OSGeo/PROJ/4.9/src/proj_api.h -O /usr/include/proj_api.h
4 执行以下命令编译安装。
make -j
make install
5 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > saga-2.3.1
#%Module1.0
set prefix /path/to/install/saga-2.3.1
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
6 执行以下命令加载modulefile。
module add saga-2.3.1
五、获取QGIS源码
1 执行以下命令获取QGIS源码。
cd /path/to/package
wget cid:link_5
六、编译与安装
1 执行以下命令解压源码。
cd /path/to/source
tar xf /path/to/package/QGIS-final-3_18_3.tar.gz
2 执行以下命令生成Makefile。
cd QGIS-final-3_18_3
mkdir build
cd build
cmake .. -DGDAL_INCLUDE_DIR=/path/to/install/gdal-3.8.1/include -DGDAL_LIBRARY=/path/to/install/gdal-3.8.1/lib64/libgdal.so -DOpenCL_LIBRARY=/usr/lib64/libOpenCL.so -DNETCDF_LIBRARY=/usr/lib64/libnetcdf.so -DProtobuf_LITE_LIBRARY=/usr/lib64/libprotobuf.so -DPROJ_INCLUDE_DIR=/usr/include -DLazPerf_INCLUDE_DIR=/path/to/install/laz-perf-3.4.0/include -DQTKEYCHAIN_LIBRARY=/path/to/install/qtkeychain-0.6.2/lib64/libqt5keychain.so -DQWT_LIBRARY=/path/to/install/qwt-6.1.3/lib/libqwt.so -DSPATIALINDEX_LIBRARY=/path/to/install/libspatialindex-1.9.3/lib/libspatialindex.so -DCMAKE_INSTALL_PREFIX=/path/to/install/QGIS-final-3_18_3 -DFCGI_LIBRARY=/path/to/install/fcgi2-2.4.2/lib/libfcgi.so -DWITH_SERVER=ON -DWITH_3D=ON -DWITH_GRASS7=ON
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > QGIS-final-3_18_3
#%Module1.0
set prefix /path/to/install/QGIS-final-3_18_3
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add QGIS-final-3_38_3
七、运行验证
1 执行以下命令安装python模块
pip3 install setuptools==57.5.0 --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install gdal==3.8.1 --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install owslib --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install psycopg2 --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
2 执行以下命令运行QGIS
qgis
回显该界面则运行成功。

一、介绍
QGIS 是一个免费、开源、跨平台(lin/win/mac)地理信息系统(GIS)。
关于QGIS的更多信息请访问QGIS相关网址
开发语言:C++、Python
一句话描述:地理信息系统
开源协议:GPL-2.0
二、环境要求
硬件要求
项目
说明
CPU
kunpeng 920
操作系统要求
项目
版本
下载地址
openEuler
22.03 LTS-SP2
https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP2/ISO/source/openEuler-22.03-LTS-SP2-source-dvd.iso
Kernel
5.10.0-153.12.0.92.oe2203sp2.aarch64
包含在操作系统镜像中。
软件要求
项目
版本
下载地址
QGIS
3.18.3
https://github.com/qgis/QGIS/archive/refs/tags/final-3_18_3.tar.gz
gcc
10.3.1
系统自带,无需下载,执行yum命令安装即可。
botan
2.17.2
https://github.com/randombit/botan/archive/refs/tags/2.17.2.tar.gz
jasper
1.900.2
https://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.2.tar.gz
libkml
1.3.0
https://github.com/libkml/libkml/archive/refs/tags/1.3.0.tar.gz
libspatialindex
1.9.3
https://github.com/libspatialindex/libspatialindex/archive/refs/tags/1.9.3.tar.gz
laz-perf
3.4.0
https://github.com/hobuinc/laz-perf/archive/refs/tags/3.4.0.tar.gz
qtkeychain
0.6.2
https://github.com/frankosterfeld/qtkeychain/archive/refs/tags/v0.6.2.tar.gz
qwt
6.1.3
https://codeload.github.com/opencor/qwt/tar.gz/refs/tags/v6.1.3
gdal
3.8.1
https://github.com/OSGeo/gdal/archive/refs/tags/v3.8.1.tar.gz
fcgi2
2.4.2
https://github.com/FastCGI-Archives/fcgi2/archive/refs/tags/2.4.2.tar.gz
grass
7.8.6
https://github.com/OSGeo/grass/archive/refs/tags/7.8.6.tar.gz
saga
2.3.1
https://github.com/saga-gis/saga-gis/archive/refs/tags/release-2-3-1.tar.gz
三、移植规划
本章节给出在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。
序号
软件安装规划路径
用途
说明
1
/path/to/package
源码包存放的路径。
这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。
2
/path/to/source
源码存放的路径。
3
/path/to/install
依赖&应用安装的路径。
4
/path/to/modulefile
环境变量管理的路径。
四、配置编译环境
前提条件:
使用SFTP工具将各安装包上传至服务器对应目录下。
服务器需接通网络。
4.1安装相关依赖
1 使用PuTTY工具,以root用户登录服务器。
2 执行以下命令使用yum安装相关依赖。
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 qt5-qtbase-devel expat-devel python3-sip-devel python3-pyqt5-sip libgta-devel opencl* zstd-devel libgeotiff-devel pcre-devel curl-devel zlib-devel json-c-devel libclc ocl-icd protobuf-devel qt5-qtwebkit-devel postgresql-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 python3-qt5-devel qca-qt5-devel mesa-libGLU-devel proj-nad fftw-devel uriparser-devel libjpeg-turbo-devel openjpeg2-devel minizip-devel netcdf-devel hdf5-devel boost-devel environment-modules wxWidgets-devel autoconf automake libtool
4.2开启X11可视化界面
1 执行以下命令使用yum安装X11组件。
yum -y xorg-x11-xauth xorg-x11-server-utils xorg-x11-server-Xnest libXtst
2 执行以下命令修改sshd_config。
vim /etc/ssh/sshd_config
将将X11-Forwarding 这一行设为yes
3 执行以下命令重启服务sshd.service。
systemctl restart sshd.service
4.3安装botan-2.17.2
1 使用PuTTY工具,以root用户重新登录服务器。
2 执行以下命令下载源码包。
mkdir -p /path/to/package
cd /path/to/package
wget cid:link_6 -O botan-2.17.2.tar.gz
3 执行以下命令解压并生成Makefile。
mkdir -p /path/to/source
cd /path/to/source
tar xf /path/to/package/botan-2.17.2.tar.gz
cd botan-2.17.2
python3 configure.py
4 执行以下命令修改Makefile。
vim Makefile
修改第58行中的--prefix和--bindir和--libdir。
修改前:
$(PYTHON_EXE) $(SCRIPTS_DIR)/install.py --prefix="/usr/local" --build-dir="build" --bindir=/usr/local/bin --libdir=/usr/local/lib --docdir=share/doc --includedir=include
修改后:
$(PYTHON_EXE) $(SCRIPTS_DIR)/install.py --prefix="/path/to/install/botan-2.17.2" --build-dir="build" --bindir=/path/to/install/botan-2.17.2/bin --libdir=/path/to/install/botan-2.17.2/lib --docdir=share/doc --includedir=include
5 执行以下命令编译安装。
make -j
make install
6 执行以下命令修改botan-2.pc。
vim /path/to/install/botan-2.17.2/lib/pkgconfig/botan-2.pc
修改第1行和第3行。
修改前:
prefix=/usr/local
libdir=/usr/local/lib
修改后:
prefix=/path/to/install/botan-2.17.2
libdir=/path/to/install/botan-2.17.2/lib
7 执行以下命令编写modulefile文件。
mkdir -p /path/to/modulefile
cd /path/to/modulefile
cat << EOF > botan-2.17.2
#%Module1.0
set prefix /path/to/install/botan-2.17.2
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
8 执行以下命令加载modulefile。
module use /path/to/modulefilemodule add botan-2.17.2
4.4安装jasper-1.900.2
1 执行以下命令下载源码包。
cd /path/to/package
wget https://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.2.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/jasper-1.900.2.tar.gz
cd jasper-1.900.2
./configure --prefix=/path/to/install/jasper-1.900.2
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > jasper-1.900.2
#%Module1.0
set prefix /path/to/install/jasper-1.900.2
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add jasper-1.900.2
4.5安装libkml-1.3.0
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_8 -O libkml-1.3.0.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/libkml-1.3.0.tar.gz
cd libkml-1.3.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/libkml-1.3.0
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > libkml-1.3.0
#%Module1.0
set prefix /path/to/install/libkml-1.3.0
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add libkml-1.3.0
4.6安装libspatialindex-1.9.3
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_1 -O libspatialindex-1.9.3.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/libspatialindex-1.9.3.tar.gz
cd libspatialindex-1.9.3
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/libspatialindex-1.9.3
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > libspatialindex-1.9.3
#%Module1.0
set prefix /path/to/install/libspatialindex-1.9.3
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add libspatialindex-1.9.3
4.7安装laz-perf-3.4.0
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_7 -O laz-perf-3.4.0.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/laz-perf-3.4.0.tar.gz
cd laz-perf-3.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/laz-perf-3.4.0
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > laz-perf-3.4.0
#%Module1.0
set prefix /path/to/install/laz-perf-3.4.0
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add laz-perf-3.4.0
4.8安装qtkeychain-0.6.2
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_2 -O qtkeychain-v0.6.2.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/qtkeychain-v0.6.2.tar.gz
cd qtkeychain-0.6.2
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/qtkeychain-0.6.2
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > qtkeychain-0.6.2
#%Module1.0
set prefix /path/to/install/qtkeychain-0.6.2
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib64
prepend-path LIBRARY_PATH \$prefix/lib64
EOF
5 执行以下命令加载modulefile。
module add qtkeychain-0.6.2
4.9安装qwt-6.1.3
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_9 -O qwt-v6.1.3.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/qtkeychain-v0.6.2.tar.gz
cd qwt-6.1.3
qmake-qt5 qwt.pro
3 修改下面文件,引入#include <QPainterPath>。
./src/qwt_painter_command.h
./src/qwt_null_paintdevice.cpp
./src/qwt_painter.cpp
./src/qwt_widget_overlay.cpp
./src/qwt_plot_renderer.cpp
./src/qwt_plot_panner.cpp
./src/qwt_plot_glcanvas.cpp
./src/qwt_compass_rose.cpp
./src/qwt_dial_needle.cpp
./src/moc/moc_qwt_plot_glcanvas.cpp
在以上文件中引入头文件#include <QPainterPath>
说明:openEuler-22.03-SP2中内嵌的QT5是5.12版本,则需修改上述文件,若使用QT5.11版本,则编译qwt6.1.3时无需修改上述文件。
4 执行以下命令编译安装。
make -j
make INSTALL_ROOT=/path/to/install/qwt-6.1.3 install
5 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > qwt-6.1.3
#%Module1.0
set prefix /path/to/install/qwt-6.1.3
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
6 执行以下命令加载modulefile。
module add qwt-6.1.3
4.10安装gdal-3.8.1
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_10 -O gdal-v3.8.1.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/gdal-v3.8.1.tar.gz
cd gdal-3.8.1
ln -s /usr/lib64/libOpenCL.so.1.0.0 /usr/lib64/libOpenCL.so
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install/gdal-3.8.1
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > gdal-3.8.1
#%Module1.0
set prefix /path/to/install/gdal-3.8.1
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib64
prepend-path LIBRARY_PATH \$prefix/lib64
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add gdal-3.8.1
4.11安装fcgi2-2.4.2
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_4 -O fcgi2-2.4.2.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/fcgi2-2.4.2.tar.gz
cd fcgi2-2.4.2
./configure --prefix=/path/to/install/fcgi2-2.4.2
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > fcgi2-2.4.2
#%Module1.0
set prefix /path/to/install/fcgi2-2.4.2
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
prepend-path PKG_CONFIG_PATH \$prefix/lib/pkgconfig
EOF
5 执行以下命令加载modulefile。
module add fcgi2-2.4.2
4.12安装grass-7.8.6
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_11 -O grass-7.8.6.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/grass-7.8.6.tar.gz
cd grass-7.8.6
./configure --prefix=/path/to/install/grass-7.8.6 --with-freetype-includes=/usr/include/freetype2 --with-opencl --with-blas --with-lapack --with-geos=/usr/bin/geos-config --with-netcdf=/usr/bin/nc-config
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > grass-7.8.6
#%Module1.0
set prefix /path/to/install/grass-7.8.6
prepend-path PATH \$prefix/grass-7.8.6/bin:\$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add grass-7.8.6
4.13安装saga-2.3.1
1 执行以下命令下载源码包。
cd /path/to/package
wget cid:link_3 -O saga-gis-release-2-3-1.tar.gz
2 执行以下命令解压并生成Makefile。
cd /path/to/source
tar xf /path/to/package/saga-gis-release-2-3-1.tar.gz
cd saga-gis-release-2-3-1/saga-gis
autoreconf -i
./configure --prefix=/path/to/install/saga-2.3.1
3 执行以下命令下载proj两个头文件
wget https://raw.githubusercontent.com/OSGeo/PROJ/4.9/src/projects.h -O /usr/include/projects.h
wget https://raw.githubusercontent.com/OSGeo/PROJ/4.9/src/proj_api.h -O /usr/include/proj_api.h
4 执行以下命令编译安装。
make -j
make install
5 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > saga-2.3.1
#%Module1.0
set prefix /path/to/install/saga-2.3.1
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
6 执行以下命令加载modulefile。
module add saga-2.3.1
五、获取QGIS源码
1 执行以下命令获取QGIS源码。
cd /path/to/package
wget cid:link_5
六、编译与安装
1 执行以下命令解压源码。
cd /path/to/source
tar xf /path/to/package/QGIS-final-3_18_3.tar.gz
2 执行以下命令生成Makefile。
cd QGIS-final-3_18_3
mkdir build
cd build
cmake .. -DGDAL_INCLUDE_DIR=/path/to/install/gdal-3.8.1/include -DGDAL_LIBRARY=/path/to/install/gdal-3.8.1/lib64/libgdal.so -DOpenCL_LIBRARY=/usr/lib64/libOpenCL.so -DNETCDF_LIBRARY=/usr/lib64/libnetcdf.so -DProtobuf_LITE_LIBRARY=/usr/lib64/libprotobuf.so -DPROJ_INCLUDE_DIR=/usr/include -DLazPerf_INCLUDE_DIR=/path/to/install/laz-perf-3.4.0/include -DQTKEYCHAIN_LIBRARY=/path/to/install/qtkeychain-0.6.2/lib64/libqt5keychain.so -DQWT_LIBRARY=/path/to/install/qwt-6.1.3/lib/libqwt.so -DSPATIALINDEX_LIBRARY=/path/to/install/libspatialindex-1.9.3/lib/libspatialindex.so -DCMAKE_INSTALL_PREFIX=/path/to/install/QGIS-final-3_18_3 -DFCGI_LIBRARY=/path/to/install/fcgi2-2.4.2/lib/libfcgi.so -DWITH_SERVER=ON -DWITH_3D=ON -DWITH_GRASS7=ON
3 执行以下命令编译安装。
make -j
make install
4 执行以下命令编写modulefile文件。
cd /path/to/modulefile
cat << EOF > QGIS-final-3_18_3
#%Module1.0
set prefix /path/to/install/QGIS-final-3_18_3
prepend-path PATH \$prefix/bin
prepend-path INCLUDE \$prefix/include
prepend-path C_INCLUDE_PATH \$prefix/include
prepend-path CPLUS_INCLUDE_PATH \$prefix/include
prepend-path LD_LIBRARY_PATH \$prefix/lib
prepend-path LIBRARY_PATH \$prefix/lib
EOF
5 执行以下命令加载modulefile。
module add QGIS-final-3_38_3
七、运行验证
1 执行以下命令安装python模块
pip3 install setuptools==57.5.0 --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install gdal==3.8.1 --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install owslib --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install psycopg2 --trusted-host pypi.tuna.tsinghua.edu.cn -i https://pypi.tuna.tsinghua.edu.cn/simple
2 执行以下命令运行QGIS
qgis
回显该界面则运行成功。