Разные версии libstdc ++ 6 на 12.04

После обновления 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 как источник проблемы, и это несоответствие торчит мне.

1
задан 26 November 2013 в 01:30

1 ответ

Как вы видите в чистой установке, версия пакета 4.8.1-2ubuntu1~10.04.1 точно не существует (мне интересно, откуда вы ее взяли, поскольку этот пакет есть только у дерзкого, может быть, PPA). Лучший способ - удалить пакет и установить из репозиториев. В некоторых случаях apt-get откажется, поэтому вы должны заставить его выполнить свою волю:

sudo apt-get -f install libstdc++6=4.6.3-1ubuntu5

Я бы проверил другие пакеты, которые могут иметь такое же условие.

0
ответ дан 26 November 2013 в 01:30

Другие вопросы по тегам:

Похожие вопросы: