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)
Спасибо
После нескольких поисков, чтобы получить gcc-4.1 & amp; g ++ - 4.1 в Ubuntu 10.10 (maverick), я нашел легкий способ обойти.
Добавьте в конец /etc/apt/sources.list источник из 10.04 (lucid)
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
Ubuntu стремится избежать старого «ада зависимостей», гарантируя, что дистрибутивы самосогласованы в своих библиотеках. Используя коммерческое программное обеспечение (Matlab), которое отстает на несколько лет, вы получаете систему MEX, которая не готова к Maverick.
Как предложено aking1012 , вам нужно сделать несколько существенных откатов версий. Вероятно, можно сказать, что вы не можете получить удовольствие от Ubuntu, а также есть старые вещи MEX (или нет, не задумываясь).
Не уверен, будет ли он работать правильно, если вы переопределите зависимости и бросите свой деб, но это стоит попробовать.
apt-get build-dep deb-name-here
apt-get source deb-name-here
cd package-dir/deb
nano control
и измените зависимость на a> вместо an =
cd ..
debuild
Это может сработать ...
Другой вариант - использовать альтернативные варианты обновления для броска - вернуть ваши версии (безопаснее)
еще один вариант - изменить номер версии в зависимости, требуемой для сборки
, хотя два из трех могут нарушить управление вашим пакетом.
Последний и лучший вариант - это скомпилировать из исходного кода в ~/src
и установить в /opt
для нужных вам версий, и сказать установщику, чтобы искать там зависимости
libstdc++6-4.1-dev
недоступно в Maverick - последнее доступно в Lucid
Вы можете установить более позднюю версию GCC. Вы получите предупреждающее сообщение, но MEX все равно скомпилируется.
Если вы получаете MATLAB R2010b, вы можете выполнить прокрутку с GCC 4.3.
. Инструкции по этому вопросу см. На: