我正在尝试运行从此处下载的复杂冰盖建模软件:ISSM
使用automake进行配置并正确编译后,我收到以下错误。
无效的MEX文件' /home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/TriMesh.mexa64': /home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/libISSMModules.so.0:未定义的符号:start_time
三角形出错(第40行) [元素,X,Y,段,segmentmarkers] = TriMesh(域名,riftname,面积);
runme出错(第11行) MD =三角形(模型,' ./ 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还是比较新的。
我尝试使用以下输出运行以下命令:
$ nm ./lib/libISSMModules.so.0 | grep' start_time'
U start_time
运行ldd
命令会返回以下未定义的符号:
$ ldd -r ./lib/libISSMModules.so.0
未定义的符号:_ZN14ToolkitOptions14toolkitoptionsE(/home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/libISSMCore.so.0) 未定义的符号:_ZN8IssmComm4commE(/home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/libISSMCore.so.0) 未定义的符号:_ZN8IssmComm8parallelE(/home/cpmcgrat/Documents/Research/ISSM/issm/trunk/lib/libISSMCore.so.0) 未定义的符号:_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) undefined symbol:Using_Main(./lib/libISSMModules.so.0) undefined symbol:interface(./lib/libISSMModules.so.0) undefined symbol:read_params(./lib/libISSMModules.so.0) undefined symbol:smalloc_stats(./lib/libISSMModules.so.0)
未定义的符号前缀为U
或B
。
据我了解,U
表示该符号未定义,B
表示该符号位于未初始化的部分。我不太清楚如何解决这个问题。
答案 0 :(得分:2)