Установка llvm и clang в Ubuntu

16

Поэтому я пытаюсь установить Halide на мою Ubuntu 12.04 (64bit). Мне нужно llvm-3.2 и clang для установки.

Запуск sudo apt-get install llvm-3.2заканчивается «пакет не найден».

Пробую sudo apt-get install llvmили sudo apt-get install clangустанавливаю 2.9 версии. Google помог мне с этим

sudo add-apt-repository ppa:kxstudio-team/builds
sudo apt-get update

Сейчас sudo apt-get install llvm-3.2 clang-3.2работает. Но когда я запускаю make в папке Halide, я все равно получаю clang: Команда не найдена.

Андрей Иванов
источник
2
Я предполагаю, что «clag: Команда не найдена» должна читать «clang: Команда не найдена»?
andyg0808
да, извините за это
Вы используете Ubuntu с графическим интерфейсом или только с командной строкой?
andyg0808
Кроме того, вам нужен лязг 3,2 или просто лязг 3+?
andyg0808
Я скачал версию для ПК. Мне на самом деле нужен llvm 3.2, нет ни слова о версии clang.

Ответы:

9

Хорошо, так что я успешно скомпилирован галогенид на Ubuntu 13.04, установив llvm, clangи build-essential. Мое единственное предположение относительно вашей проблемы заключается в том, что LLVM или лязг из установленного вами PPA-модуля могли работать не совсем правильно. Кажется, что на самом деле можно получить LLVM 3.2 из Ubuntu для 12.04 через так называемый «предложенный» архив. Вы можете попробовать очистить LLVM и установить его из «предложенного». Я объясню, как это сделать ниже. Поскольку вы упомянули, что вы новичок в Ubuntu (в оригинальной версии вопроса), я сначала объясню, что делает каждая команда, которую вы уже использовали, насколько я могу.

Итак, sudo apt-get install llvm-3.2попытка установить пакет с именами llvm-3.2из текущих репозиториев, включенных в вашей системе. В вашем случае его не удалось найти, поэтому команда завершилась неудачно. sudo apt-get install llvmустановил llvmпакет, который, вероятно, является специальным пакетом, который просто использует самую последнюю версию LLVM, доступную в ваших стандартных репозиториях. В вашем случае это было 2,9. Та же идея относится и к sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds добавляет в вашу систему так называемый личный архив пакетов или PPA. Это позволяет получить больше программного обеспечения из другого хранилища или программного источника. См. Https://help.launchpad.net/Packaging/PPA для получения дополнительной информации. В заключение,sudo apt-get updateсообщает Ubuntu, чтобы получить информацию о том, какие пакеты доступны из доступных в настоящее время репозиториев. Вы можете взглянуть на http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html для получения дополнительной информации об управлении пакетами в Debian (большая часть которой также относится к Ubuntu, поскольку Ubuntu основан на Debian).

Итак, шаги для удаления пакетов, которые вы получили, и установки версий, доступных из точного предложения:

  1. Используйте, sudo apt-get purge llvm-3.2 clang-3.2чтобы полностью удалить LLVM и лязг из вашей системы.
  2. (Необязательно) Используйте sudo add-apt-repository --remove ppa:kxstudio-team/buildsдля удаления PPA из вашей системы.
  3. Следуйте инструкциям на https://wiki.ubuntu.com/Testing/EnableProposed, чтобы включить архив Proposed (прямо вверху страницы), а также следуйте инструкциям для «Выборочное обновление с -proposed». Первая часть активирует актуальную версию llvm-3.2пакета Ubuntu , а вторая не позволит системе пытаться обновить все до Предложенных версий.
  4. Используйте sudo apt-get updateдля получения информации о том, какие пакеты и версии теперь доступны.
  5. Используйте sudo apt-get install llvm-3.2/precise-proposedдля установки LLVM 3.2 и используйте sudo apt-get install clang/precise-proposedдля установки Clang 3.0 (я думаю, это версия, которую вы должны получить).
  6. НОВЫЙ ШАГ: Сделайте так, sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configчтобы система воспринимала llvm-config-3.2(как это было в llvm-configкомплекте llvm-3.2) как llvm-config. Точнее, это создает символическую ссылку (или символическую ссылку) на llvm-config-3.2 в другом месте, где Ubuntu будет искать программы (больше информации: ln , FHS , PATH ). Таким образом, когда вы запускаете «llvm-config», Ubuntu найдет символическую ссылку и запустит программу, на которую она указывает ( llvm-config-3.2).
  7. Посмотрите, все ли теперь правильно скомпилировано.

Надеюсь, это работает. Я не проверял ничего из этого, поэтому пользуйтесь на свой страх и риск и т. Д. Я уверен, однако, что это не должно делать ничего страшного.

РЕДАКТИРОВАТЬ: Обратите внимание, что llvmи llvm-3.2являются независимыми. llvmзависит от llvm-2.9( см. здесь ), а llvm-3.2является отдельным ( см. здесь зависимости )

Кроме того, я не уверен, знаете ли вы о завершении вкладки ; это может быть полезно, если вы ищете команду, но не знаете ее имя (например, в этом случае, возможно, она показала бы, что она llvm-configбыла вызвана llvm-config-3.2).

andyg0808
источник
Большое спасибо! Это почти сработало. Единственная проблема в том, что установленный llvm-3.2 не имеет llvm-config. Поэтому, когда я запускаю make в Halide, он говорит, что llvm не установлен. Я запустил установку llvm и теперь llvm-config --version сообщает 2.9. Если я пытаюсь установить llvm-3.2, он говорит, что это последняя версия. Кажется, что llvm-3.2 и llvm полностью независимы.
Смотрите новый шаг в ответе; вы, вероятно, захотите удалить llvmпакет ( sudo apt-get purge llvm), прежде чем сделать это, чтобы убедиться, что вы получите правильную версию. Вы всегда можете проверить, какой файл вы пытаетесь запустить, используя команду which [command]. Например, which llvm-configследует прочитать /usr/local/bin/llvm-config. См. En.wikipedia.org/wiki/Which_%28Unix%29 для получения дополнительной информации.
andyg0808
почему llvm-config не связан с llvm-config-3.2 так же, как для gcc? это осознанный выбор?
Янус Троелсен
@JanusTroelsen Я считаю, что это осознанный выбор. Поскольку версия LLVM, которая была доступна из llvmпакета для Ubuntu 12.04, была llvm-2.9, llvm-configкоманда была связана llvm-configс той же версией, то есть llvm-config-2.9. В Ubuntu 13.04 и 13.10 llvmпакет устанавливает LLVM 3.2, и я ожидаю, что затем он будет настроен llvm-config-3.2так llvm-config, как в Ubuntu 13.10.
andyg0808