1) 我需要 gcc-4.1 来使用 Matlab mex,但我无法使用 apt-get install 完全安装它:
The following packages have unmet dependencies:
libstdc++6-4.1-dev : Depends: gcc-4.1-base (= 4.1.2-27ubuntu1) but 4.1.2-29ubuntu1 is to be installed
Depends: g++-4.1 (= 4.1.2-27ubuntu1) but it is not going to be installed
E: Broken packages
2) 我现在只安装了 gcc-4.1-base 和 -multilib。编译 mex 文件时:
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
libstdc++6-4.1-dev 出了点问题。于是我去http://packages.ubuntu.com/maverick/gcc-4.1下载了libstdc++6-4.1-dev_4.1.2-27ubuntu1_i386.deb。但无法安装:
Dependency is not satisfiable: g++-4.1 (= 4.1.2-21ubuntu1)
谢谢
经过大量搜索以在 Ubuntu 10.10(特立独行)中获得 gcc-4.1 和 g++-4.1,我发现很容易解决。
添加到来自 10.04 的 /etc/apt/sources.list 源的末尾(清晰)
然后运行
您必须指定版本 4.1.2-27,因为 libstdc++6-4.1-dev 尚未反向移植到 4.1.2-29。
如果您覆盖依赖项并滚动自己的 deb,不确定它是否会正常运行,但值得一试。
并将依赖项更改为 > 而不是 =
它可能工作...
另一种选择是使用更新替代方案来回滚您的版本(更安全)
另一种选择是修改构建所需的依赖项中的版本号,
但三个中的两个可能会破坏您的包管理。
最后也是最好的选择是从源代码编译
~/src
并安装到/opt
您需要的版本,并告诉安装程序在那里查找依赖项Ubuntu 通过确保发行版在其库中的自洽性来努力避免旧的“依赖地狱”。通过使用落后几年的商业软件 (Matlab),您获得的 MEX 系统还没有为 Maverick 做好准备。
正如aking1012 所建议的,您必须对版本进行一些重要的回滚。可以说,你不能拥有 Ubuntu 便利的蛋糕,也不能吃旧式的 MEX 东西(或者不是不吐不快)。
libstdc++6-4.1-dev
在 Maverick 中不可用 - 它最后在 Lucid 中可用您可以安装更高版本的 GCC。您将收到一条警告消息,但 MEX 仍将编译。
如果您获得 MATLAB R2010b,您可以使用 GCC 4.3
有关于此的说明:https ://help.ubuntu.com/community/MATLAB#MEX%20functions