簡體   English   中英

由於未定義符號“start_time”,MEX 文件無效

[英]Invalid MEX-file due to undefined symbol 'start_time'

我正在嘗試運行從這里下載的復雜冰蓋建模軟件: 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 行)[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 還是比較陌生。

我嘗試使用以下輸出運行以下命令:

$ nm ./lib/libISSMModules.so.0 | grep '開始時間'

開始時間

運行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/libsmE) 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) 未定義符號:start_time (./lib/libISSMModules.so.0) 未定義符號:input_time (./lib/libISSMModules.so.0) 未定義符號:Using_Main (./lib /libISSMModules.so.0) 未定義符號:接口 (./lib/libISSMModules.so.0) 未定義符號:read_params (./lib/libISSMModules.so.0) 未定義符號:smalloc_stats (./lib/libISSMModules.so. 0)

未定義的符號以UB為前綴。

我的理解是U表示符號未定義, B表示符號位於未初始化的部分。 但是,我不確定如何解決此問題。

我無法下載並嘗試您的代碼,但您描述的症狀(符號在庫中定義,您正在鏈接到庫,但仍未找到該符號)看起來很像一個問題與庫鏈接的順序。

這里這里有很好的文章解釋了鏈接順序的問題。 簡而言之,如果在需要該符號的文件或庫 (libB) 之前鏈接的庫 (libA) 中定義了符號,則該符號將被報告為丟失。

因此,命令libA libB (其中libB取決於libA )將觸發錯誤,但libB libA會正常。 如果兩個庫都有相互依賴關系,那么要么使用libA libB libA要么使用--start-group--end-group鏈接器標志,鏈接器將在其中循環訪問文件組,直到找到所有未解析的符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM