安装经历简述
由于目前我一直没有下定决心离开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我已经安装过了)。
在一切的开始,请先:
1 | sudo apt-get update |
安装Cmake
有关安装搜到的一些教程:StackExchange-link,blog-link。
虽然有网友不推荐使用sudo apt-get
因为安装不到最新版本的Cmake,但是对于这里使用Spirit的要求足够了。
1 | sudo apt-get install cmake |
版本高于Spirit的最低要求3.2。
安装OpenGL
搜到的安装教程:link
1 | sudo apt-get install build-essential #这个只是装编译器,大部分人已经有了 |
安装Qt
搜到的安装教程:zhihu-link,blog-link。
1 | sudo apt-get install libx11-dev libxext-dev libxtst-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,然后运行
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
的话,请安装:
1 | sudo apt-get install libxkbcommon-x11-0 |
下一步需要注册登陆。我之前已经有账号了所以直接登陆,没有的注册一个吧,不用担心,我们最后都是免费用的。
安装目录就用默认的:
安装内容我几乎都选了:
开始漫长等待:
安装大约20min(渣笔记本)/3min(台式机 )。
最后:
1 | sudo apt-get install libqt4-dev |
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
下载。例如:
1 | git clone https://github.com/spirit-code/spirit.git |
若不用git clone
而是手动下载,同样是下载到Windows常用目录下(如,Download文件夹)然后用WSL bash命令行将其复制到WSL用户目录下。
进入源码目录内spirit/
或者像我的是spirit-develop/
:
1 | # make a build directory and enter that |
第一次运行与踩坑
下面就到了激动人心的第一次运行了。只要在spirit根目录下运行
1 | ./spirit |
就可以运行GUI,可惜这里有坑折磨了我两天。声明,如果你使用原生Linux系统,你不会遇见下面问题。但若你还想Linux Windows两不放,坚持使用WSL,请接着看:
WSL下运行GUI你需要XLaunch。你可以安装两种软件:Xming以及上面Qt安装时提到过的VcXsrv(VcXsrv教程)。使用Xming会直接报错:
1 | failed to get the current screen resources |
使用VcXsrv会出现无尽的composeAndFlush: makeCurrent() failed
经过网络搜索,这篇帖子link给出了两种解决方案:
-
升级WSL2
-
- Change from xming to vcxsrv
- If on a HighDPI screen change compatibility settings to let the application handle DPI scaling.
- Start
vcxsrv
without support for OpenGL indirection (-nowgl
) and ensure thatLIBGL_ALWAYS_INDIRECT
is unset (export LIBGL_ALWAYS_INDIRECT=
)
后面会说,WSL2其实并不解决问题。升级WSL2后会遇到与WSL同样的问题,也需要与WSL同样的解决方案。所以这里先说第二种方法的操作,对应于WSL。
WSL
首先,执行:
1 | export LIBGL_ALWAYS_INDIRECT= |
然后,使用VcXsrv而非Xming,且在打开VcXsrv时的设置注意:
最后运行:
1 | ./spirit |
就可以运行GUI界面了!(下面是gif录频动画,大小7.2MB)
WSL 2
若想升级WSL2,请参阅我的另一篇博客《WSL and WSL2搭建》。
升级到WSL2,并打开X-server,运行
1 | ./spirit |
你大概率仍然要碰到:
1 | QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-xxxxx' |
之类的错误。
我搜到的几个解答网页:GitHub-Issue-link,superuser-link。
而后我使用的方法为: