Вопрос или проблема
(Используя 19.10 в актуальном состоянии)
Я использую cmake для сборки emacs irony server
Cmake
дополнительно загружает файл cmake для llvm;
/usr/lib/llvm-8/lib/cmake/clang/ClangTargets.cmake
и это проверяет наличие файла
/usr/lib/llvm-8/lib/libclangBasic.a
То же самое для пакета llvm-9
.
Так что мой вывод заключается в том, что упаковка llvm dev
повреждена и была повреждена некоторое время,
Я также видел, как другие люди сообщали об этом поврежденном пакете.
Кроме загрузки llvm/clang и сборки, есть ли обходной путь.
Кроме того, можете ли вы исправить пакет в последующем?
Если кто-то заинтересован, я нашел решение своей проблемы!
Глупо, но я пропустил установку дополнительного пакета clang-dev.
Я убедил себя, что есть проблема с моей установкой, так как видел
идентичную проблему в Интернете.
Спустя пару лет проблема продолжает возникать: если на системе установлено несколько версий Clang или LLVM, CMake будет искать libclangBasic.a
не в том месте.
Очевидное решение: удалить все устаревшие пакеты Clang и LLVM.
Если возможно, не устанавливайте вручную ни один из пакетов с номером версии в их названиях. Используйте только общие пакеты, такие как llvm-dev
, libclang-dev
.
Часы и часы я искал решение онлайн.
Как сказал Йоахим В, вам нужно удалить старые пакеты.
Единственное, что сработало для меня (сборка QT6), это удалить
эти пакеты:
sudo apt remove clang-13
sudo apt remove clang-14
sudo apt remove clang-15
sudo apt remove clang-16
Как-то они были ответственны за ошибку.
Если вам нужна дополнительная информация, посетите этот пост.
Я столкнулся с той же проблемой при сборке Qt 6, и вот как я ее решил:
Сначала я удалил все существующие версии Clang с моей системы:
sudo apt remove clang-13
sudo apt remove clang-14
Затем я установил Clang версии 12 вместе с необходимыми библиотеками разработки:
sudo apt install libclang-12-dev llvm-12-dev
После этих шагов процесс сборки стал работать правильно.
После этого все начало работать
Ответ или решение
При решении проблемы отсутствия библиотеки libclangBasic
в пакете dev для LLVM, существует несколько важных аспектов, которые необходимо учитывать. Ниже приведено подробное руководство по устранению этой проблемы, а также рекомендации по предотвращению её повторения.
Проблема
Пользователи, работающие с cmake
для сборки проектов, таких как emacs irony server
, часто сталкиваются с ошибками, связанными с отсутствием файла libclangBasic.a
. Эта библиотека является частью набора инструментов LLVM и Clang, и её отсутствие может указывать на неправильную установку пакетов или их несоответствие версии.
Причины проблемы
- Несоответствие версий: Если на одной системе установлено несколько версий LLVM и Clang,
CMake
может искать библиотеку в неправильном месте, что приводит к ошибкам сборки. - Отсутствие необходимых пакетов: Ваша сборка может зависеть от дополнительных пакетов, таких как
libclang-dev
илиllvm-dev
, которые содержат необходимые библиотеки для работы. - Конфликт пакетов: Установка дополнительных конкретных версий (например,
clang-13
,clang-14
) может привести к конфликтам между библиотеками, вызывая ошибки при сборке.
Решения
Чтобы исправить проблему, вы можете предпринять следующие шаги:
-
Удаление старых версий Clang и LLVM: Убедитесь, что вы удалили все ненужные версии:
sudo apt remove clang-13 clang-14 clang-15 clang-16
-
Установка необходимых пакетов: Установите только те пакеты, которые нужны для вашего проекта. Рекомендуется использовать универсальные пакеты, такие как
llvm-dev
иlibclang-dev
:sudo apt install libclang-12-dev llvm-12-dev
-
Проверка переменных окружения: Убедитесь, что переменные окружения, такие как
CMAKE_PREFIX_PATH
, корректно указывают на установленные версии LLVM и Clang. -
Переустановка: Если после удаления и установки новых пакетов проблема остается, попробуйте полностью удалить LLVM и Clang, а затем установить их заново:
sudo apt remove llvm clang sudo apt install llvm clang libclang-dev llvm-dev
Профилактика
Чтобы избежать возникновения подобных проблем в будущем, рекомендуется придерживаться следующих практик:
- Избегайте установки пакетов с номерами версий в их названиях. Вместо этого используйте обобщенные версии, чтобы избежать конфликтов.
- Регулярно проверяйте и обновляйте зависимости ваших проектов, особенно при работе с библиотеками, связанными с компиляцией.
- Поддерживайте чистую среду разработки, избегая установки ненужных пакетов, которые могут привести к конфликтам.
Заключение
Опыт показывает, что организация правильной среды разработки — это ключ к успешной сборке и работе с проектами на основе LLVM и Clang. Удаление конфликтующих пакетов, установка необходимых библиотек, а также соблюдение рекомендуемых практик по управлению версиями должны существенно снизить риск возникновения проблем в будущем. Если у вас остались вопросы или вы столкнулись с дополнительными трудностями, обращайтесь к сообществу разработчиков или документации инструментов для получения актуальной информации и поддержки.