首先电脑中应准备一个磁盘内存不小于200G的空盘;
然后再准备好VMware Workstation Pro16.0(下文简称为VM)运行程序和Kylin-Desktop-V10-SP1-RC1-Build01-210326-x86_64.iso安装文件;
打开VM程序,点击如图示中的“创建新的虚拟机”,选择“典型(推荐)(T)”,再点击“下一步”;
选择“稍后安装操作系统(S)”,再点击“下一步”;
选择“Linux(L)”,版本选择“Ubuntu64位”,再点击下一步;
备注:因为银河麒麟V10_SP1是基于乌班图二次开发,所以这里我们选择Ubuntu64位;
将虚拟机命名为:Kylin,然后将存储位置选择为开始时准备的空磁盘(≥50G),然后点击下一步;必须大于等于50G,否则安装不成功!
按如图所示进行设置,因为作者最开始时预留的是一个60G大小的磁盘,所以将最大磁盘大小设置为59.9,用户在搭建环境时,可根据自己电脑内存的实际情况进行磁盘分配,只要大于或等于50G即可;
最后确认设置,点击“完成”;
点击“编辑虚拟机设置”;
我们把虚拟机的内存设置为4096MB,其目的是防止后期运行时系统出现卡顿;
将处理器数量和每个处理器的内核数都设置为2;
点击“CD/DVD(SATA)”,选择“使用ISO映像文件”,然后我们进入开始时,存放有Kylin-Desktop-V10-SP1-RC1-Build01-210326-x86_64.iso文件的文件夹,选中后,再点击“打开”;
最后点击下面的“确定”按钮;
然后我们再点击右上角的“开启此虚拟机”;
当我们进入后,按键盘上的PgUp↑和PgDn↓,选择“安装银河麒麟操作系统(I)”;
选择“中文(简体)”,再点击“下一步”;
选择时区,默认上海,然后再点击“下一步”;
请在阅读许可协议这步中,将协议下拉至最下端,否则点击不了下面的‘√’,然后再点击下一步;
这一步我们将用户名设为‘money’,密码须为英文和数字的组合,且一共不能少于6个字符,然后我们再点击下一步;
为方便起见,我们这里选择“快速安装”,同时还应选中下面“磁盘”,然后再点击“下一步”;
勾选“格式化整个磁盘”,再点击“开始安装”;
等待几分钟后安装完成,现在我们点击“现在重启”;
备注:在我们点击重启后,可能出现桌面鼠标箭头消失的情况,这时我们只需同时按“Ctrl”和“Alt”键即可恢复出箭头;
9) 然后再按“Enter”键,进入虚拟机中的麒麟系统;如果我们发现虚拟机中的系统无网络连接,我们需点击VM软件的“虚拟机”,再选择“网络适配器”,选择“桥接模式”,最后点击“确定”;
五、 麒麟系统预览
六、 在麒麟系统上安装QGis软件
在我们打开终端后应输入:sudo su,然后会提示输入密码;
备注:请输入我们在VM上安装麒麟系统时设置的密码,与Win系统不同的是,在终端输入密码时不会有符号提示,所以在输完密码后请直接按“Enter”键确认即可,若密码输入有误,终端会提示再次输入;
然后我们再输入:cd / ,此命令是让我们进入根目录;
之后再输入:sudo gedit /etc/apt/sources.list;
备注:此时若终端提示“sudo gedit:找不到命令”;我们只需重新安装gedit即可,在终端的下一个命令行输入:sudo apt-get install gedit,安装完成后,接着输入上面的“sudo gedit /etc/apt/sources.list”,假如我们在输入上面“sudo apt-get install gedit”命令后提示无法安装,可以先将gedit工具卸载,输入:sudo apt-get remove gedit,然后再输入安装gedit命令进行重新安装。
以上三步图示如下:
执行sudo gedit /etc/apt/sources.list 命令之目的是将下载源进行更换,该步骤不是一定要操作的步骤,可跳过该步骤;但更换成“阿里源”后,采用apt-get安装软件会快很多,也可以更换其他合适的源;更换完成后如下图所示,再点击右上角的保存;
具体代码如下:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb https://qgis.org/ubuntu-ltr focal main
deb-src https://qgis.org/ubuntu-ltr focal main
然后我们再在命令行输入:sudo apt update;更新本地的包清单(根据source.list清单产生的缓存,以后去阿里源下载包),注意,如果在执行完本条代码后,出现了图示中的提示;
出现上述提示是需要我们增加QGIS的GPG公钥,代码如下:
wget -O - https://qgis.org/downloads/qgis-2021.gpg.key | gpg --import
输入完成后会出现如下图所示的提示框;
然后再输入这条代码:gpg --fingerprint 46B5721DBBD2996A;在输入本条代码后,下面应接着显示以下内容:
pub rsa4096 2021-08-09 [SCEA] [expires: 2022-08-09] 2445 D6B2 54DA C452 A498 989E 46B5 721D BBD2 996A uid [ultimate] QGIS Archive Automatic Signing Key (2021) [email protected],如下图所示:
然后再从密钥服务器下载密钥,并将密钥添加到apt,在终端输入下面代码执行该操作:
wget -qO - https://qgis.org/downloads/qgis-2021.gpg.key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/qgis-archive.gpg –import
然后再输入:
sudo chmod a+r /etc/apt/trusted.gpg.d/qgis-archive.gpg
如下图所示:
为QGIS添加 QGIS 存储库,在终端输入以下代码:
sudo add-apt-repository “deb https://qgis.org/ubuntu $(lsb_release -c -s) main”
注意:这些行中的“lsb_release -c -s”将返回您的发行版名称:
更新存储库信息,以反映刚刚添加的 QGIS 信息,在终端输入以下代码:
sudo apt update
现在,安装 QGIS:
sudo apt install qgis qgis-plugin-grass
如下图所示:
在安装完成后,只需在终端上输入:qgis,即可运行该程序,输入:qgis --version,可查看所安装的QGis版本;
七、 在麒麟系统上通过Qt5.x构建QGis
1、说明
QGIS像许多主要项目一样,可以使用CMake从源代码构建。在开始前,我们先确认检查下虚拟机中QGis构建所需的工具和依赖项是否正确;
构建所需的工具:CMake >= 3.12.0、Flex >= 2.5.6、Bison >= 2.4、Python >= 3.7
构建所需的依赖项:Qt >= 5.12.0、Proj >= 4.9.3、GEOS >= 3.4、Sqlite3 >= 3.0.0、SpatiaLite >= 4.2.0、libspatialindex、GDAL/OGR >= 2.1、Qwt >= 5.0 & (< 6.1 with internal QwtPolar)、expat >= 1.95、QScintilla2、QCA、qtkeychain (>= 0.5)、libzip。
2、准备Qt环境
国产银河麒麟V10操作系统,虽然内核是linux,但经过了一些改造,因此跟常用的linux系统相比,还是有一些差异,经过反复测试,发现不是每一个qt库版本都可以安装,并且有一些qt库即使安装上了,也会缺少一些组件,导致qt开发的C++程序编译失败,而qt-everywhere-5.13.2版本则暂时没有碰到缺组件的问题。
sudo apt-get install re2c
cd qt-everywhere-src-5.15.2/qtwebengine/src/3rdparty/ninja
./configure.py --bootstrap
sudo cp ./ninja /usr/bin
#检查安装的ninja是否成功
ninja --version
./configure -prefix /usr/local/qt-qt-5.13.2 -release -opensource -nomake examples -nomake tests -platform linux-clang
sudo make -j 8
sudo make install
11) 配置Qt环境
Qt 安装完成后,先别打开,因为还需要安装其他工具以及库文件。打开终端,键入命令“sudo apt-get install gcc g++”,安装 linux 下编程的编译器;
再输入命令“sudo apt-get install libqt4-dev”,不然编译时会出现错误“cannot find -lgl”;
再输入命令“sudo apt-get install build-essential”,这是一个编译工具,它可以使得我们的程序知道头文件和库函数放在哪个位置;
打开 Qt,即在终端,使用 cd 命令进入你的 Qt 安装目录(本文的Qt 安装在根目录下,使用命令“cd /opt/Qt5.7.0/Tools/QtCreator/bin/”),然后使用命令“./qtcreator”打开 Qt;
3、GDAL/PROJ6/SQLite3等构建依赖项;
打开虚拟机中的网页浏览器,输入这个网址:http:// gdal.org/download.html#,w我选择的是gdal-3.4.1.tar.gz进行下载,下载完成后,我们可以在“下载”目录查看到我们下载的源码,然后在“下载”页面右键打开终端,输入此命令:tar -zxvf gdal-3.4.1.tar.gz,对其进行解压,然后再将其移动至/home/Soft目录下(注:/home目录下的/Soft目录是笔者根据个人习惯自己建立的);之后再配置安装目录,笔者配置在/usr/GDAL3.4.1目录下,然后再生成makefile文件,命令执行代码如下:
:~/下载$ tar -zxvf gdal-3.4.1.tar.gz #对源码解压命令
:~/下载$ ls #查看解压后该目录下的文件,若之前操作无误,此时会显示解压后对应的文件夹:gdal-3.4.1
:~/下载$ sudo mv gdal-3.4.1 /home/Soft #将文件夹gdal-3.4.1移动到home目录下的Soft文件夹中
:~/下载KaTeX parse error: Expected 'EOF', got '#' at position 15: cd /home/Soft #̲进入home目录下的Soft文… cd gdal-3.4.1 #进入gdal-3.4.1文件夹
:/home/Soft/gdal-3.4.1$ sudo mkdir /usr/GDAL3.4.1 #建立GDAL的安装目录
:/home/Soft/gdal-3.4.1$ sudo ./configure --prefix=/usr/GDAL3.4.1
当我们执行上述命令后,命令行会出现以下提示:
checking for PROJ >= 6 library… checking for proj_create_from_wkt in -lproj… no
checking for internal_proj_create_from_wkt in -lproj… no
checking for internal_proj_create_from_wkt in -linternalproj… no
configure: error: PROJ 6 symbols not found
其原因是因为GDAL/OGR3.x版本需要PROJ6的支持,所以我们需要解决PROJ6的问题;
PROJ6官方下载地址:https://proj.org/我们在虚拟机中的网页浏览器搜索该网址,点击“Download”进入下载页面;
我们选择proj-6.3.2.tar.gz进行下载保存,解压后移动至/home/Soft目录,然后再进入proj-6.3.2文件夹,需具体执行的命令语句如下:
:~/下载$ tar -zxvf proj-6.3.2.tar.gz #对源码解压命令
:~/下载$ sudo mv proj-6.3.2 /home/Soft #将文件夹proj-6.3.2移动到home目录下的Soft文件夹中
:/home/Soft$ cd proj-6.3.2 #进入proj-6.3.2文件夹
:/home/Soft/ proj-6.3.2$ sudo mkdir /usr/PROJ6 #建立PROJ6的安装目录
:/home/Soft/ proj-6.3.2$ sudo ./configure –prefix=/usr/PROJ6
在执行完上述命令后,可能会出现下面问题:
No package ‘sqlite3’ found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SQLITE3_CFLAGS
and SQLITE3_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
这是因为PROJ6的编译依赖SQLite3
●进入:https://www.sqlite.org/download.htm ;
下载sqlite-autoconf-3330000.tar.gz,解压、移动至/home/Soft目录、配置安装目录,生成makefile,具体操作可参考上文,下面给出具体操作命令:
sudo mkdir /usr/SQLite3
tar -zxvf sqlite-autoconf-3330000.tar.gz
cd sqlite-autoconf-3330000/
sudo ./configure –prefix=/usr/SQLite3
sudo make
sudo make install
●编译PROJ6,回到PROJ6解压目录,执行下面指令:
xxx/proj-6.3.2$ export PKG_CONFIG_PATH=/usr/PROJ
xxx/proj-6.3.2$ export PKG_CONFIG_PATH=/usr/PROJ6
xxx/proj-6.3.2$ echo $PKG_CONFIG_PATH #测试是否设置成功
/usr/PROJ6 #显示
xxx/proj-6.3.2$ export SQLITE3_CFLAGS=/usr/SQLite3/include
xxx/proj-6.3.2$ echo $SQLITE3_CFLAGS #测试是否设置成功
/usr/SQLite3/include #显示
xxx/proj-6.3.2$ export SQLITE3_LIBS=/usr/SQLite3/lib
xxxs/proj-6.3.2$ echo $SQLITE3_LIBS #测试是否设置成功
/usr/SQLite3/lib #显示
xxx/proj-6.3.2$ export PATH=/usr/SQLite3/bin/: P A T H x x x / p r o j − 6.3.2 PATH xxx/proj-6.3.2 PATHxxx/proj−6.3.2 echo P A T H / u s r / S Q L i t e 3 / b i n / : / h o m e / g i s p i p i / j d k 1.8.0 / b i n : / h o m e / g i s p i p i / j d k 1.8.0 / j r e / b i n : / h o m e / g i s p i p i / Q t 5.14.1 / 5.14.1 / g c c 6 4 / b i n : / u s r / c m a k e − 3.18 / b i n : / u s r / l o c a l / s b i n : / u s r / l o c a l / b i n : / u s r / s b i n : / u s r / b i n : / s b i n : / b i n : / u s r / g a m e s : / u s r / l o c a l / g a m e s : PATH /usr/SQLite3/bin/:/home/gispipi/jdk1.8.0/bin:/home/gispipi/jdk1.8.0/jre/bin:/home/gispipi/Qt5.14.1/5.14.1/gcc_64/bin:/usr/cmake-3.18/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games: PATH/usr/SQLite3/bin/:/home/gispipi/jdk1.8.0/bin:/home/gispipi/jdk1.8.0/jre/bin:/home/gispipi/Qt5.14.1/5.14.1/gcc64/bin:/usr/cmake−3.18/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:JAVA_HOME/bin:/snap/bin #显示
xxx/proj-6.3.2$ sqlite3 --version
3.33.0 2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f #显示
xxx/proj-6.3.2$ sudo ./configure --prefix=/usr/PROJ6
继续安装依赖:
xxx/proj-6.3.2 s u d o a p t − g e t i n s t a l l l i b s q l i t e 3 − d e v x x x / p r o j − 6.3.2 sudo apt-get install libsqlite3-dev xxx/proj-6.3.2 sudoapt−getinstalllibsqlite3−devxxx/proj−6.3.2sudo apt-get install sqlite sqlite3
xxx/proj-6.3.2$ sudo ./configure --prefix=/usr/PROJ6 #成功生成了makefile
xxx/proj-6.3.2$ sudo make #开始编译了,过程比较慢
xxx/proj-6.3.2$ sudo make install #安装到指定目录/usr/PROJ6
完成后的界面应如下图所示:
●编译GDAL
设置PATH将PROJ6的bin目录加入环境变量、编译依赖文件,即上一步编译的结果。
xxx/gdal-3.4.1$ export PATH=/usr/PROJ6/bin:KaTeX parse error: Expected 'EOF', got '#' at position 7: PATH #̲设置环境变量 xxx/gdal… sudo ./configure --with-proj=/usr/PROJ6 --prefix=/usr/GDAL3 #设置依赖文件及安装目录:注意 --with-proj=/usr/PROJ6很重要,告诉gdal去哪个目录找头文件和库
xxx/gdal-3.4.1$ sudo make #该过程较慢,需耐心等待
xxx/gdal-3.4.1$ sudo make install #安装
完成后的界面应如下图所示:
4、编译GEOS
GEOS是一个用于空间计算几何的C/ C++库,通常被“地理信息系统”软件使用,GEOS是PostGIS、QGIS、GDAL和Shapely的核心依赖。
提示:上下按钮选择变量,在对应变量值上按’Enter’键即可进行输入修改;
比较关键的两个:
CMAKE_INSTALL_PREFIX- 默认设置为 /usr/local/directory
CMAKE_BUILD_TYPE- 值为或(这对调试很有用)ReleaseDebug
a. 开始构建,请在geos_build的终端命令行中输入:make
b. 开始测试,请在geos_build的终端命令行中输入:make test
c. 开始检查,请在geos_build的终端命令行中输入:make check
d. 开始安装,请在geos_build的终端命令行中输入:make install
e. 如果你想卸载GEOS,请在geos_build的终端命令行中输入:make uninstall
5、开始构建QGIS
执行:sudo apt-get install gedit
执行:gedit /etc/apt/sources.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
更新本地的包清单,输入:apt update
接着请在终端命令行中输入安装构建依赖项(bionic版本)的命令:
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 pandoc 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.qtpositioning 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++
准备开发环境
mkdir -p ${HOME}/dev/cpp
cd KaTeX parse error: Expected 'EOF', got '#' at position 375: …m:~/qgis-3.10.0#̲ cd build-maste…{HOME}/apps;
**按键盘上的上下按钮,选择对应的项,若要修改某项,请先确保光标在对应的项上,然后再按’Enter’键,即可对项参数进行修改,修改完成后,再按一次’Enter’键退出编辑!
配置好后,现在可以按c键去配置,按e去编辑参数改掉这些错误,按g可以生成makefile;
!提示,通常在按g之前,需要按c很多次。
/接下来会遇到一些问题,笔者在此过程中遇到的问题和解决方法如下文所述/
八、 FAQ
1、提示:OpenCL报错
在我们对QGis进行构建时,可能会出现以下错误:
Could not find OpneCL (missing:OpenCL_LIBRARY OpenCL_INCLUDE_DIR)
Couldn’t fing OpenCL:support DISABLED
具体解决方法:
将该SDK下载至‘xxx/下载’,然后再解压
3) 安装依赖项:
~/xxx$ sudo apt install dkms xz-utils openssl libnuma1 libpciaccess0 bc curl libssl-dev lsb-core libicu-dev
~/xxx$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
~/xxx$ echo “deb http://download.mono-project.com/repo/debian wheezy main” | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
~/xxx$ sudo apt-get update
~/xxx$ sudo apt-get install mono-complete
4) 进入intel SDK解压后的目录,开始安装,输入指令:
sudo sh install_GUI.sh
(注:此文件名因版本不同会有区别,请在执行此命令前,输入‘ls’,查看一下解压包内‘installxxx.sh’文件的具体名称 )
按照提示信息安装,安装时可能会提示“Unsupported OS”,点击next无视掉。安装到“Installation summary”页面时,点击“Customize”自定义安装组件,选择除了“Set of OpenCL™ files for Android* target”以外的所有组件。
无视Missing libraries,next继续,点Install安装。
2、提示:ccmake:未找到指令
将对应的路径填写,如下所示:(注:以本机实际路径为准)
GDAL_CONFIG /usr/GDAL3/bin/gdal-config
GDAL_CONFIG_PREFER_FWTOOLS_PAT /bin_safe
GDAL_CONFIG_PREFER_PATH /bin
GDAL_INCLUDE_DIR /usr/GDAL3/include
GDAL_LIBRARY /usr/GDAL3/lib
4、提示:Could NOT find LibZip
Could NOT find LibZip (missing:LIBZIP_LIBRARY LIBZIP_CONF_INCLUDE_DIR)
输入指令:sudo apt install libzip-dev
5、提示:Could NOT find Protobuf
(missing: Protobuf_INCLUDE_DIR)
7、安装JPEG
输入以下指令进行安装:
sudo apt-get install libjpeg-dev
8、构建QtWibKit
目前问题卡在这里。
参考:
安装:GitHub - qt/qtwebkit at 5.212
如何构建:(106条消息) ubuntu编译qt5.3 WebKit_happyzzzzz的博客-CSDN博客_编译qtwebkit