После обновления Server 10.04 до 12.04 я получал ошибки, связанные с lgcc_s, при попытке компиляции с g ++ и gcc. В /usr/lib/gcc/x86_64-linux-gnu/
установлено несколько версий libgcc_s, включая 4.6 и 4.8. Если я создаю символическую ссылку на libgcc_s.so
в каталоге 4.6 на /usr/lib
, чтобы он был у меня на пути, компиляция выдает ошибку ld: unable to find lgcc_s
. Если я связываю версию из папки 4.8, все работает. Проверка версии libstdc++6
дает
apt-cache policy libstdc++6
libstdc++6:
Installed: 4.8.1-2ubuntu1~10.04.1
Candidate: 4.8.1-2ubuntu1~10.04.1
Version table:
*** 4.8.1-2ubuntu1~10.04.1 0
100 /var/lib/dpkg/status
4.6.3-1ubuntu5 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
Версия g++
- 4.6.3
.
При чистой установке 12.04 в каталоге /usr/lib/gcc/x86_64-linux-gnu/
доступен только каталог 4.6. Кроме того, на выходе apt-cache policy libstdc++6
выводится
libstdc++6:
Installed: 4.6.3-1ubuntu5
Candidate: 4.6.3-1ubuntu5
Version table:
*** 4.6.3-1ubuntu5 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
. Почему версии libstdc++6
отличаются после установки? Почему связывание библиотеки из каталога 4.8 работает, а каталог 4.6 - нет? Как я могу удалить версию 4.8 libstdc++6
, не разрушая ее зависимостей (которые являются почти каждой программой в системе)?
Наконец, главная причина для того, чтобы задавать эти вопросы, состоит в том, что я пытаюсь (и не удалось) создать несколько программных пакетов (Cantera и RDKit), которые не работают на различных этапах компиляции C ++. Я хочу устранить gcc как источник проблемы, и это несоответствие торчит мне.
Как вы видите в чистой установке, версия пакета 4.8.1-2ubuntu1~10.04.1
точно не существует (мне интересно, откуда вы ее взяли, поскольку этот пакет есть только у дерзкого, может быть, PPA). Лучший способ - удалить пакет и установить из репозиториев. В некоторых случаях apt-get откажется, поэтому вы должны заставить его выполнить свою волю:
sudo apt-get -f install libstdc++6=4.6.3-1ubuntu5
Я бы проверил другие пакеты, которые могут иметь такое же условие.