[英]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 -a
和objdump -x
優先於strings
來檢查ELF文件。實際上,所有GLIBCXX_ *版本都不適用於整個庫,而是適用於每個符號(符號版本,請參見DSO-howto)。 因此,您可以在同一庫文件上具有例如:
std::char_traits<wchar_t>::eq@@GLIBCXX_3.4.5
和std::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.