1

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 にアップグレードしたことを確認しました。すると問題が出てきます。何が問題で、あまり痛みを伴わずに解決するにはどうすればよいですか?

4

3 に答える 3

1

MatLab R2011a コンパイル エラーの解決策。

GCC-4.4 をダウンロードしてインストールする

コマンドを使用: mbuild -setup

オプション 1 を選択すると、/usr/local/MATLAB/R2011a/bin/mbuildopts.sh にあるファイルが取得されます。

ファイルを検索し、すべてのコンパイラ オプションを gcc-4.4 に置き換えます。

それからコンパイルしてください。

于 2011-10-26T15:07:22.317 に答える
0

ルートはGLIBCXX_3.4.14' not found. 同様の SO の質問: GLIBCXX バージョンと @ninjalj の回答を見ると、リンカーに問題があるようです:

readelf -aとを使用して、objdump -xよりも ELF ファイルを検査しますstrings

Actually, all the GLIBCXX_* versions don't apply to the entire library, but to each symbol (symbol versioning, see DSO-howto). So you can have e.g: std::char_traits<wchar_t>::eq@@GLIBCXX_3.4.5 and std::ios_base::Init::~Init()@@GLIBCXX_3.4 on the same library file.

The fact that your program needs GLIBCXX_3.4.9 probably means that it has been linked against a symbol that has been introduced/has changed semantics on GLIBCXX_3.4.9.

于 2011-10-03T19:46:37.417 に答える
0

私はエリック・チューの答えを試しましたが、これが私のために働いた唯一のものです:

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

最初にファイルをバックアップする必要があります。

于 2012-02-07T10:52:10.937 に答える