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)
谢谢
答案1
在 Ubuntu 10.10(maverick)中搜索了 gcc-4.1 和 g++-4.1 之后,我发现了一个简单的解决方法。
从 10.04 (lucid) 开始添加到 /etc/apt/sources.list 源的末尾
deb http://mirrors.us.kernel.org/ubuntu/ lucid main universe
然后运行
sudo apt-get update
您必须指定版本 4.1.2-27,因为 libstdc++6-4.1-dev 尚未移植回 4.1.2-29。
sudo apt-get install gcc-4.1=4.1.2-27ubuntu1 gcc-4.1-base=4.1.2-27ubuntu1 cpp-4.1=4.1.2-27ubuntu1 g++-4.1
答案2
Ubuntu 致力于通过确保发行版的库具有自洽性来避免旧有的“依赖地狱”。通过使用落后几年的商业软件 (Matlab),您将获得一个尚未为 Maverick 做好准备的 MEX 系统。
作为aking1012建议,您必须进行一些重大的版本回滚。可能有人会说,您既不能同时拥有 Ubuntu 的便利性,又不能同时使用旧式 MEX 的东西(或者说,如果不弄得一团糟的话)。
答案3
不确定如果您覆盖依赖项并推出自己的 deb 它是否能正常运行,但值得一试。
apt-get build-dep deb-name-here
apt-get source deb-name-here
cd package-dir/deb
nano control
并将依赖项更改为 > 而不是 =
cd ..
debuild
它可能会有用...
另一个选择是使用更新替代方案来回滚您的版本(更安全),
还有一个选择是修改构建所需的依赖项中的版本号,
但三者中的两个可能会破坏您的包管理。
最后也是最好的选择是从源代码编译~/src
并安装到/opt
您需要的版本,并告诉安装程序在那里查找依赖项
答案4
libstdc++6-4.1-dev
在 Maverick 中不可用 - 这是最后一次在 Lucid 中可用
您可以安装更高版本的 GCC。您将收到一条警告消息,但 MEX 仍会进行编译。
如果你有 MATLAB R2010b,你可以使用 GCC 4.3
有关于此的说明:https://help.ubuntu.com/community/MATLAB#MEX%20functions