在分享|国外一款用于离子束仿真的开源软件IBSimu一文中介绍了国外开源的一个程序包IBSimu,用来仿真离子源的引出过程,并且给出了安装过程,但是在实际操作过程中我发现使用msys2+mingw的方式总是出现问题,尝试了两天后依然没解决zlib库的问题,听朋友说在win10上安装ubuntu比较不错,于是尝试了这个,找到国外一个教程,发现还是有问题,果然菜是原罪,折腾了两天发现依然是环境配置有问题,今天下午找到我一个会linux的师弟,折腾了整整半天终于搞定了,我现在分享出来。
首先是ubuntu的安装
关于在windows系统上安装ubuntu的教程请看适用于 Linux 的 Windows 子系统安装指南 (Windows 10),按照这个教程一步步操作就行,需要说明的一点是需要检查CPU是否开启的虚拟化,没有的话需要在bios界面开启虚拟化,结果如下图所示。开启bios虚拟化的过程请参考百度知道:
电脑怎么在bios开启虚拟化
。
另一个需要注意的点是先更新windows系统,最好更新到最新的win10,在windows官方系统有说,我使用的是2004版本,win+R然后输入winver,确定后即可查看自己的系统版本。更新版本很费时间,我这边花了大半天时间。
然后是在ubuntu上安装和编译IBSimu,详细过程如下
:
这是在国外一个安装教程的基础之上进行的修改。
这里显示库安装不全面,还有一些其他的库需要安装。按照上图提示,通过搜索包含相关库的源获取,然后安装。
过程如下:
对于ubuntu系统,可用apt-file包查询缺失的文件,用
现在,要设置两个环境变量,以便在以后的程序运行中让编译器能顺利找到本次安装的程序。你可以直接在终端里运行以下命令
![eacc1b5b1a1a0595a564f9eb0169fd7c.png](https://i-blog.csdnimg.cn/blog_migrate/90c9c30afc3e374b6afbb3946ab8a6f8.png)
![576cd7a481196d750057cfb76f1b5e52.png](https://i-blog.csdnimg.cn/blog_migrate/30095e9540a907906811bd1258702d54.png)
安装库环境
以 ubuntu 环境为例,CentOS等是相似的。sudo apt install libcairo2-dev
sudo apt install libgsl-dev
sudo apt install libgtk-3-dev
sudo apt install gcc
除了这些库,可能还需要gsl等,这个库无法直接安装,如何安装请看下文。
下载IBSimu
git clone git://ibsimu.git.sourceforge.net/gitroot/ibsimu/ibsimu
编译
cd ibsimu./reconf./configure --prefix=`pwd`make -j4 ##4核或者8核,我这里用的4核make install
老外:
你可能需要将“./configure”行中的前缀路径调整为下载存储库的文件夹,即更改‘’pwd‘
注:pwd
指令意为返回当前执行命令的目录,而`pwd
`的意思是先运行pwd
后把结果填上去,但是有的环境有可能不能这么写,比如在ubuntu下这个指令可以正常执行,但在一个全新的arch虚拟机里,就得写成./configure --prefix=/home/yyxc-1993/ibsimu
在实际操作过程中,在./reconf这个环节遇到了一些问题
![bfa55a3c22bc4a1c4f917aca508fb834.png](https://i-blog.csdnimg.cn/blog_migrate/40f1393eb9b4789137d11efe6864e2fd.jpeg)
sudo apt install apt-file
命令安装apt-file。
sudo apt install apt-file# 假设缺失的文件是cairo2sudo apt-file update# 第一次用要用update命令刷新缓存sudo apt-file search cairo2# 在返回的结果里,左侧一列是软件包名,右侧一侧是查找到的文件名,在软件包名中找一个看上去差不多的包安装(依赖装多了没关系),例如libcairo2-dev这个sudo apt install libcairo2-dev
对于arch系统,由于其包管理系统更加健全,可直接安装报错中提到的包,例如
# ...
checking for cos in -lm... yes
checking for LIBPNG... yes
checking for FONTCONFIG... yes
checking for FREETYPE... yes
configure: error: required library cairo not found
# 报错提示cairo包找不到
sudo pacman -S cairo
这里还出现了另一个问题,如果环境配置好了还是无法通过编译,可能是由于之前configure
命令导致配置出错,可以尝试重新git clone IBSimu库再执行编译的步骤。
到这里,IBSimu的安装就完成了,接下来是如何做一个仿真案例。
接下来遇到了路径的问题,我这里直接给出结果
环境变量设置
老外: 在你编译任何项目之前,你必须设置好环境变量。 下面是我在arch虚拟机里运行的结果,可以看到最终编译的结果被安放在了圈出来的位置。在之前的ubuntu虚拟机里,这个结果是/home/yyxc-1993/code/ibsimu/lib/pkgconfig
![a59aba93fa6a94e579e187b6098426be.png](https://i-blog.csdnimg.cn/blog_migrate/f231dc20fef84b8447086d142d5c69ae.png)
export PKG_CONFIG_PATH="/home/yyxc-1993/code/ibsimu/lib/pkgconfig"
export LD_LIBRARY_PATH="/home/yyxc-1993/code/ibsimu/lib"
如果你不想每次打开终端都输入一遍的话,往下看。
老外:
如果你想在任何时候打开一个新的控制台/终端,你可以把这些命令放到你的“.bashrc”中。首先找到当前路径:
注:bash是linux的默认shell,每当你打开一个linux终端时,bash都会读取目录下.bashrc
文件中的参数。你也可以输入source ~/.bashrc
来立即让bash读取这个文件,而不用重新打开一个终端。
注:如果你使用的不是bash,例如zsh,要更改的文件就是.zshrc
cd
nano ~/.bashrc
老外:
复制这两个路径放到最后并保存
export PKG_CONFIG_PATH="/home/yyxc-1993/code/ibsimu/lib/pkgconfig"
export LD_LIBRARY_PATH="/home/yyxc-1993/code/ibsimu/lib"
注:这两个位置是根据编译最后一步的结果来定的,例如如果是我在arch虚拟机中的结果,这两句就是这样
export PKG_CONFIG_PATH="/home/xuwanqian/code/ibsimu/lib/pkgconfig"
export LD_LIBRARY_PATH="/home/xuwanqian/code/ibsimu/lib"
makefile的设置
CC = g++
LDFLAGS = `pkg-config --libs ibsimu-1.0.6dev`
CXXFLAGS = -Wall -g `pkg-config --cflags ibsimu-1.0.6dev`
vlasov2d: vlasov2d.o
$(CC) -o vlasov2d vlasov2d.o $(LDFLAGS)
vlasov2d.o: vlasov2d.cpp
$(CC) -c -o vlasov2d.o vlasov2d.cpp $(CXXFLAGS)
clean:
$(RM) *~ *.o vlasov2d ##vlasov2d是cpp文件的文件名
设置好之后,直接在windows下建立一个test文件夹,然后建立一个txt文档,将名字改成makefile代码里面的同名文件,格式更改为.cpp,输入需要计算的模型代码(案例请看上一篇更新,直接复制即可)
再建立一个空白txt文档,命名为makefile文档,删除.txt保存。然后采用记事本打开这个文档,复制上面的代码(按需修改)。
然后在test文件夹空白处【shift+右键】【在此处打开linux shell】,输入make开始编译,最后再键入编译好的结果开始计算,我这里的命名是vlasov2d。
make
./vlasov2d
至此完成计算。
结果如下:
![8c466e88cd4b572fe668f746c2b93d92.png](https://i-blog.csdnimg.cn/blog_migrate/457e05d644e88e48f9770d47cdc11fd0.png)
![f569b2ce14085729fe778b14cb2a2cf5.png](https://i-blog.csdnimg.cn/blog_migrate/3ea53c8b3c69b31cc2217878480da1dd.png)