avatar

目录
Spirit学习(一)
  • Spirit官网:link
  • Spirit文档:link

安装经历简述

由于目前我一直没有下定决心离开MATLAB的舒适区转投Python,安装就没有选择“Getting started with the Python Package”,而是计划在WSL下安装GUI版本,然后使用XLaunch显示窗口。

后面终于安装完成测试运行时,发现WSL一直报错,所以无奈之下还将Spirit安装在了原生Linux系统中,并尝试用WSL2看能否解决问题。最后阴差阳错还是找到了在WSL中解决问题的方法,因此,本教程已成功应用于WSL,原生Ubuntu,原生Deepin以及WSL2

p.s. 听人说,spirit的问题在于无法并行计算,因此安装在服务器上和安装在自己个人电脑上差距不大。

安装

Spirit安装麻烦的原因就在于需要源码编译,而编译源码就不可避免复杂而乏味的编译环境下载配置。(我只是想用软件啊!不想为了安装一个软件而要先安装其它一批软件啊!)从link来看,我们安装需要Cmake,Qt,OpenGL(C++ compiler我已经安装过了)。

在一切的开始,请先:

bash
1
2
sudo apt-get update
sudo apt-get upgrade

安装Cmake

有关安装搜到的一些教程:StackExchange-linkblog-link

虽然有网友不推荐使用sudo apt-get因为安装不到最新版本的Cmake,但是对于这里使用Spirit的要求足够了。

Code
1
sudo apt-get install cmake

安装结束后确认:

版本高于Spirit的最低要求3.2。

安装OpenGL

搜到的安装教程:link

bash
1
2
3
4
5
sudo apt-get install build-essential #这个只是装编译器,大部分人已经有了
sudo apt-get install libgl1-mesa-dev #安装OpenGL Library
sudo apt-get install libglu1-mesa-dev #安装OpenGL Utilities
sudo apt-get install libglut-dev #安装OpenGL Utility Toolkit,我试了,这句不行,用下面的
sudo apt-get install freeglut3-dev

安装Qt

搜到的安装教程:zhihu-linkblog-link

bash
1
2
sudo apt-get install libx11-dev libxext-dev libxtst-dev
sudo apt-get install xlibmesa-gl-dev libglu1-mesa-dev #报错我没管了,其实这句话不运行没有问题

下载qt-opensource-linux-x64-5.14.1.run下载地址,2020年3月此时的最新版),我将文件下载在windows默认Download文件夹下,然后通过WSL下cp命令复制到WSL的~目录下。(由于WSL的文件系统和Windows本身的文件系统还是不同,请不要自己用Windows任务管理器复制文件到WSL的文件夹下,而要使用WSL bash的命令)

运行.run进行安装,我知道是要有图形窗口的,这一点我不担心,因为我之前已经安装了XLaunch,可以用于显示WSL中的图形界面,可以参看:VcXsrv教程(只需要其中:1.安装X-Windows 3.配置compiz窗口管理器,请跳过2.Ubuntu安装桌面环境)

因此,现在打开VcXsrv中的XLaunch,然后运行

bash
1
./qt-opensource-linux-x64-5.14.1.run

防止有人不知道,如果上面这句你运行不了,请使用chmod +777命令给qt-opensource-linux-x64-5.14.1.run增加运行权限。不会的请搜索chmod

这里如果报错:error while loading shared libraries: libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory的话,请安装:

Code
1
sudo apt-get install libxkbcommon-x11-0

下一步需要注册登陆。我之前已经有账号了所以直接登陆,没有的注册一个吧,不用担心,我们最后都是免费用的。

安装目录就用默认的:

安装内容我几乎都选了:

开始漫长等待:

安装大约20min(渣笔记本)/3min(台式机 )。

最后:

bash
1
2
sudo apt-get install libqt4-dev
sudo apt install libqt5charts5-dev #这句话要加是我自己发现的,否则后面Cmake时:Could not find a package configuration file provided by "Qt5Charts" with......

p.s. 吐槽Linux下安装真是比Windows简单好多。你看看Windows下的Qt安装过程博客:blog-link。同理OpenGL,windows下的安装教程blog-link。Cmake在WSL下从源码编译安装当然非常慢,但是用sudo apt-get就会很方便(虽然大家不推荐,因为apt总是装不到最新的版本,但是这里Spirit只要Cmake版本高于3.2即可)

编译Spirit

安装主要参照:link

源码直接从GitHub官网上link右上角Clone or download下载。例如:

bash
1
git clone https://github.com/spirit-code/spirit.git

若不用git clone而是手动下载,同样是下载到Windows常用目录下(如,Download文件夹)然后用WSL bash命令行将其复制到WSL用户目录下。

进入源码目录内spirit/ 或者像我的是spirit-develop/

bash
1
2
3
4
5
6
7
8
9
# make a build directory and enter that
mkdir build
cd build

# Generate makefiles
cmake ..

# Build
make

第一次运行与踩坑

下面就到了激动人心的第一次运行了。只要在spirit根目录下运行

bash
1
./spirit

就可以运行GUI,可惜这里有坑折磨了我两天。声明,如果你使用原生Linux系统,你不会遇见下面问题。但若你还想Linux Windows两不放,坚持使用WSL,请接着看:

WSL下运行GUI你需要XLaunch。你可以安装两种软件:Xming以及上面Qt安装时提到过的VcXsrv(VcXsrv教程)。使用Xming会直接报错:

Code
1
2
failed to get the current screen resources
WARNING: Application calling GLX 1.3 function "glXCreatePbuffer" when GLX 1.3 is not supported! This is an application bug!

使用VcXsrv会出现无尽的composeAndFlush: makeCurrent() failed

经过网络搜索,这篇帖子link给出了两种解决方案:

  1. 升级WSL2

后面会说,WSL2其实并不解决问题。升级WSL2后会遇到与WSL同样的问题,也需要与WSL同样的解决方案。所以这里先说第二种方法的操作,对应于WSL。

WSL

首先,执行:

Code
1
export LIBGL_ALWAYS_INDIRECT=

然后,使用VcXsrv而非Xming,且在打开VcXsrv时的设置注意:

最后运行:

bash
1
./spirit

就可以运行GUI界面了!(下面是gif录频动画,大小7.2MB)

WSL 2

若想升级WSL2,请参阅我的另一篇博客《WSL and WSL2搭建》。

升级到WSL2,并打开X-server,运行

Code
1
./spirit

你大概率仍然要碰到:

Code
1
2
3
4
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-xxxxx'
Authorization required, but no authorization protocol specified
qt.qpa.screen: QXcbConnection: Could not connect to display xxx.xxx.xxx.xxx:0
Could not connect to any X display.

之类的错误。

我搜到的几个解答网页:GitHub-Issue-linksuperuser-link

而后我使用的方法为:

  1. 还是要使用VcXsrv,而不是Xming;
  2. export LIBGL_ALWAYS_INDIRECT=
  3. export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0(这句话可以加入~/.bashrc,不知道~/.bashrc的人可以不管~/.bashrc
  4. 重新打开VcXsrv,在设置时注意如下图
  5. 结束。运行./spirit
文章作者: HuangXiaoKai
文章链接: 2020/03/05/Spirit学习一/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 篁竹水声de公共空间
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论