Linux运行mexa64文件出现segmentation fault, Epanet toolkit命令无法运行
发表于 : 2019-05-18 17:43
因为科研需要,租借了天河2号超算进行计算,天河2号是Redhat 64位系统,之前已经安装了MATLAB 2014a和Epanet
在Linux的MATLAB中,我已经成功将c代码文件编译成(用mex命令).mexa64文件,但是在运行这个.mexa64文件时,MATLAB却报错了,出现了segmentation violation的错误,然后MATLAB自动退出了。后来我发现这个错误是发生在c文件的" ENopen("TLN.inp","reportFile.rpt",""); " 这个命令里面(ENopen 是Epanet的toolkit里的一个命令),在运行.mexa64文件之前我已经加载了动态链接库:loadlibrary('libepanet','toolkit.h')。以下是我操作的过程:
1. 在此之前已经编译好动态链接库(libepanet.so, libepanet.so.2, libepanet.so.2.11;在压缩包里)
2. 将所需的文件(压缩包里)放置于目标文件夹中
3. 更新环境变量 “export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH”
4. 启动MATLAB “matlab -singleCompThread -nojvm -nodisplay”
5. 加载动态链接库 “loadlibrary('libepanet2','toolkit.h')”
6. 运行mexa64文件 “[objs, constr]=TLN2obj(13*ones(1,8),1)”
结果出现了错误~~
希望有高手可以帮一下忙,会适当给报酬费用~
在Linux的MATLAB中,我已经成功将c代码文件编译成(用mex命令).mexa64文件,但是在运行这个.mexa64文件时,MATLAB却报错了,出现了segmentation violation的错误,然后MATLAB自动退出了。后来我发现这个错误是发生在c文件的" ENopen("TLN.inp","reportFile.rpt",""); " 这个命令里面(ENopen 是Epanet的toolkit里的一个命令),在运行.mexa64文件之前我已经加载了动态链接库:loadlibrary('libepanet','toolkit.h')。以下是我操作的过程:
1. 在此之前已经编译好动态链接库(libepanet.so, libepanet.so.2, libepanet.so.2.11;在压缩包里)
2. 将所需的文件(压缩包里)放置于目标文件夹中
3. 更新环境变量 “export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH”
4. 启动MATLAB “matlab -singleCompThread -nojvm -nodisplay”
5. 加载动态链接库 “loadlibrary('libepanet2','toolkit.h')”
6. 运行mexa64文件 “[objs, constr]=TLN2obj(13*ones(1,8),1)”
结果出现了错误~~
希望有高手可以帮一下忙,会适当给报酬费用~