我試圖運行從這裏下載一個複雜的冰蓋建模軟件: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