我试图运行从这里下载一个复杂的冰盖建模软件:ISSM无效MEX文件,由于未定义的符号“START_TIME”
运行使用automake配置和编译正确,我发现了以下错误后。
无效MEX文件 '/home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/TriMesh.mexa64': /家庭/ cpmcgrat /文档/科研/ ISSM/ISSM /主干/ lib目录/libISSMModules.so.0:undefined symbol:start_time
三角形错误(第40行) [elements,x,y,segments,segmentmarkers] = TriMesh(domainname,riftname,area);
runme错误(第11行) md = triangle(model,'。/ DomainOutline.exp',1000);
这是从下面的代码片段在runme.m
:
disp(' Step 1: Mesh creation');
%Generate initial uniform mesh (resolution = 20000 m)
md=triangle(model,'./DomainOutline.exp',1000);
我在这里的想法是,triangle.a
库,这是对链接是一个静态文件,因此它应该需要一个共享对象。但是,即使更新三角形库为triangle.so
后,我仍然收到相同的错误。在这一点上,我完全没有想法。如果我缺乏任何相关信息,请告诉我,我对GNU autotools还比较陌生。
我试着用下面的输出运行以下命令:
$纳米./lib/libISSMModules.so.0 | grep '可以START_TIME'
ùSTART_TIME
ldd
的命令的运行返回以下未定义的符号:
$ LDD -r ./lib/libISSMModules.so.0
undefined symbol:_ZN14ToolkitOptions14toolkitoptionsE(/home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/libISSMCore.so.0) undefined symbol:_ZN8IssmComm4commE(/ home/cpmcgrat/Documents/Research/ISSM/issm /trunk/lib/libISSMCore.so.0) undefined symbol:_ZN8IssmComm8parallelE(/home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/libISSMCore.so.0) undefined symbol:_Z9ApiPrintfPKc(/ home/cpmcgrat /Documents/Research/ISSM/issm/trunk/lib/libISSMCore.so.0) undefined symbol:start_time(./lib/libISSMModules.so.0) undefined symbol:input_time(./lib/libISSMModules.so.0 ) 未定义符号:Using_Main(./lib/libISSMModules.so.0) 未定义符号:接口(./lib/libISSMModules.so.0) 未定义符号:read_params(./lib/libISSMModules.so.0) undefined symbol:smalloc_stats(./lib/libISSMModules.so.0)
未定义符号的前缀为U
或B
。
据我的理解,U
表示符号未定义,B
表示该符号位于未初始化的部分。但我很不确定如何解决这个问题。
也许您的DYNAMIC_LIBRARY_PATH变量设置不正确。 – AnonSubmitter85
@ AnonSubmitter85在哪里进行修改?环境,配置或生成文件? – asdf
如果使用BASH,环境通常类似'export DYNAMIC_LIBRARY_PATH =/path/to/shared/objects1:/ path/to/blahblah /'。不过,我认为你需要在启动matlab之前进行设置。另外,如果已经定义了,一定要执行'export DYNAMIC_LIBRARY_PATH =/path1:/ path2:$ DYNAMIC_LIBRARY_PATH'。 – AnonSubmitter85