簡體   English   中英

使用Matlab R2011a在Ubuntu 11.04上編譯Matlab mex文件時出錯

[英]error while compiling Matlab mex file on Ubuntu 11.04 with Matlab R2011a

我正在嘗試編譯一個共享庫,它將在Ubuntu 11.04上調用MATLAB函數。 像命令:

mcc - B cpplib:libStepCluster StepCluster.m

得到以下錯誤。

/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl_c.so.2) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.2) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl.so.7) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl.so.7) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libgmpxx.so.4)

我知道代碼可以在Ubuntu 10.10上正常工作,並已升級到Ubuntu 11.04。 然后問題出來了。 問題出在什么地方,如何解決卻又沒有太多痛苦呢?

MatLab R2011a編譯錯誤解決方案。

下載並安裝GCC-4.4

使用命令:mbuild -setup

選擇選項1,然后您將獲得一個文件,位於/usr/local/MATLAB/R2011a/bin/mbuildopts.sh

搜索文件並將所有編譯器選項替換為gcc-4.4

然后編譯它,應該沒問題!

GLIBCXX_3.4.14' not found根目錄GLIBCXX_3.4.14' not found 尋找類似的SO問題: GLIBCXX版本和@ninjalj回答,看來您有鏈接器問題:

使用readelf -aobjdump -x優先於strings來檢查ELF文件。

實際上,所有GLIBCXX_ *版本都不適用於整個庫,而是適用於每個符號(符號版本,請參見DSO-howto)。 因此,您可以在同一庫文件上具有例如: std::char_traits<wchar_t>::eq@@GLIBCXX_3.4.5std::ios_base::Init::~Init()@@GLIBCXX_3.4

您的程序需要GLIBCXX_3.4.9的事實可能意味着它已與已引入的符號鏈接,或已在GLIBCXX_3.4.9上更改了語義。

我嘗試了Eric Chu的答案,但這是唯一對我有用的東西:

sudo ln -s /usr/lib/libstdc++.so.6 {MATLABROOT}/sys/os/{architecture}/libstdc++.so.6

您將要首先備份文件。

暫無
暫無

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

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