Как установить и gcc-4.7-plugin-dev и gcc-4.8-plugin-dev на Ubuntu 16.04 без конфликтов?

Я только что установил Ubuntu 16.04, Гостеприимную на ноутбуке, который я использую для разработки.

Я в настоящее время работаю над плагином для gcc, и я хочу, чтобы мой плагин был совместим с несколькими различными версиями компилятора (в настоящее время от gcc-4.6 кому: gcc-6). Поэтому мне нужны несколько различных версий компилятора и сменных заголовков, установленных на моей рабочей станции разработки одновременно, так, чтобы я мог создать плагин против различных версий. Это работало как очарование со старым LTS 14.04, но с новым LTS у меня есть проблема, которую я не могу решить.

Я могу легко установить всю версию gcc от gcc-4.7 кому: gcc-5 из репозитория по умолчанию, но когда я пробую, начинают устанавливать gcc-*-plugin-dev пакеты я сталкиваюсь с проблемами. В основном все прекрасно, если я устанавливаю только gcc-4.8-plugin-dev, gcc-4.9-plugin-dev и gcc-5-plugin-dev. После этого, если я пытаюсь установить gcc-4.7-plugin-dev Я получаю следующее:

fez@vbox1604:~$ sudo apt install gcc-4.7-plugin-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libgmpv4-dev
Suggested packages:
  gmp-doc libgmp10-doc libmpfr-dev
The following packages will be REMOVED:
  gcc-4.8-plugin-dev gcc-4.9-plugin-dev gcc-5-plugin-dev libgmp-dev libmpc-dev libmpfr-dev
The following NEW packages will be installed:
  gcc-4.7-plugin-dev libgmpv4-dev
0 upgraded, 2 newly installed, 6 to remove and 0 not upgraded.
Need to get 1003 kB of archives.
After this operation, 15.0 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
fez@vbox1604:~$

Поскольку Вы видите, что это не позволяет мне установить пакет, если я не удаляю другие. Проблема, кажется, то, что различные версии gcc полагаются на различные версии libgmp. Если факт gcc-4.8-plugin-dev и выше потребуйте пакета libgmp-dev, в то время как gcc-4.7-plugin-dev требует libgmpv4-dev. Эти последние два являются на самом деле двумя отдельными пакетами, и они в источнике конфликта.

Это казалось очень странным для меня, с тех пор в Ubuntu 14.04 все работало просто великолепно. Следовательно я решил смотреть на packages.ubuntu.com, Вот то, что я узнал:

  1. о нас libgmp-dev и libgmpv4-dev

    • на Ubuntu 14.04 libgmpv4-dev не существует и все версии gcc-*-plugin-dev зависьте от libgmp-dev
    • на Ubuntu 16.04 существует два отдельных пакета libgmp-dev и libgmpv4-dev. По-видимому, единственная разница между двумя из них - то, что первый остается дома main репозиторий, в то время как последний находится в universe.
    • для libgmp-dev зависимости являются тем же в обеих Ubuntu 14.04 и 16.04
    • libgmpv4-dev на Ubuntu 16.04, вместо этого, зависит от в основном тех же пакетов, но именование и версии немного отличаются, чем те, которые в libgmp-dev. И libgmpv4-dev отчеты" (GCC 4.x совместимый)" в его описании. Но я не понимаю, почему это значительно, так как gcc-4.8 находится в 4.x ряд, но он работает превосходный с (non-4.x-compatible?) libgmp-dev. И до Ubuntu 14.04 также gcc-4.7 работал только с libgmp-dev таким образом, я не понимаю то, что изменилось.
  2. о нас gcc-4.7-plugin-dev и gcc-4.8-plugin-dev

    • на Ubuntu 14.04 они зависят от той же версии libgmp: libgmp-dev
    • на Ubuntu 16.04 не ясно, почему, но они начинают иметь различные зависимости, когда я показал Вам на терминале:
      • gcc-4.7-plugin-dev зависит от libgmpv4-dev
      • gcc-4.8-plugin-dev зависит от libgmp-dev

У кого-либо из Вас есть какая-либо идея о том, почему вещами является этот путь? Вы знаете, если и как я могу установить обоих версии gcc-4.7-plugin-dev и gcc-4.8-plugin-dev на той же машине с Ubuntu 16.04? Я не ниндзя способных зависимостей, но что-то выглядит странным для меня, и мне действительно нужно это для работы как прежде, потому что мне нужен он для моей работы. Иначе я должен откатывать к 14,04 (или сохранить более старую версию gcc в chroot, но я хотел бы избежать его если возможный).

Заранее спасибо

феска


Я сожалею, но кажется, что моя репутация на просит, чтобы человечность не была достаточно высока для регистрации всех ссылок на информацию, которую я обеспечиваю о пакетах и их зависимостях. Я могу обеспечить их позже или в комментариях, если Вам нужны они. Так или иначе достаточно считать packages.ubuntu.com и искать точные имена пакета, которые я обеспечил для нахождения их.


Я знаю, что там существуют ppa для gcc набора инструментальных средств (https://launchpad.net / ~ ubuntu-toolchain-r / + archive/ubuntu/ppa), и я также пытался добавить его к своим источникам. Это позволяет мне установить более широкий диапазон gcc версий (от gcc-4.5 кому: gcc-6) но это не решает проблему, ни это изменяет что-либо с конфликтами.

Я уже попытался установить версию, которые имеют конфликты в chroot, и это, кажется, работает, но я действительно хотел бы знать, существует ли способ решить эту проблему зависимости без злых шуток. В принципе я хотел бы найти способ сделать установку управляемой с Кв.

0
задан 4 August 2016 в 19:40

1 ответ

Ну, что я делаю должен использовать докера или контейнер LXD для создания "Хостов Компилятора" для предотвращения таких проблем. Может это работать также на Вас?

0
ответ дан 28 September 2019 в 17:50

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

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