Вопрос или проблема
Я обновил систему на Manjaro, используя yay -Syu
. Похоже, что она обновила gcc до какой-то экспериментальной версии.
-
Я попытался переустановить
gcc13
, но это не решило проблему:export LDFLAGS="${LDFLAGS/-fuse-ld=mold/-fuse-ld=ld}"
перед попыткой установки.export CC=gcc-13 CXX=g++-13
перед попыткой установки.
-
yay -S base-devel
снова устанавливает экспериментальную версию gcc 14.2.1+r134+gab884fffe3fc-1, если я пытаюсь ее удалить. -
Я задавал вопросы трём разным LLM, но не получил полезных ответов.
Вот логи:
yay -S --noconfirm bambustudio-git
AUR Явно (1): bambustudio-git-01.06.00.65.15.g693af0c9-1
:: PKGBUILD актуален, пропускаем загрузку: bambustudio-git
1 bambustudio-git (Файлы сборки существуют)
==> Пакеты для очисткиСборки?
==> [N] None [A] All [Ab] Abort [I] Installed [No] NotInstalled или (1 2 3, 1-3, ^4)
==>
1 bambustudio-git (Файлы сборки существуют)
==> Показать различия?
==> [N] None [A] All [Ab] Abort [I] Installed [No] NotInstalled или (1 2 3, 1-3, ^4)
==>
==> Создание пакета: bambustudio-git 01.07.01.62.4.g5ef759ce-1 (Ср 06 Ноя 2024 16:07:17)
==> Получение источников...
-> Обновление репозитория BambuStudio...
-> Найден BambuStudio.cpp.patch
-> Найден CMakeLists.txt.patch
-> Найден wxWidgets.cmake.patch
-> Найден bambu-studio.sh
==> ПРЕДУПРЕЖДЕНИЕ: Пропущена проверка PGP подписей исходных файлов.
==> Проверка исходных файлов с помощью sha512sums...
BambuStudio ... Пропущено
BambuStudio.cpp.patch ... Пройдено
CMakeLists.txt.patch ... Пройдено
wxWidgets.cmake.patch ... Пройдено
bambu-studio.sh ... Пройдено
:: (1/1) Разбор SRCINFO: bambustudio-git
==> Создание пакета: bambustudio-git 01.07.01.62.4.g5ef759ce-1 (Ср 06 Ноя 2024 16:07:19)
==> Проверка зависимостей во время выполнения...
==> Проверка зависимостей на этапе сборки...
==> Получение источников...
-> Обновление репозитория BambuStudio...
-> Найден BambuStudio.cpp.patch
-> Найден CMakeLists.txt.patch
-> Найден wxWidgets.cmake.patch
-> Найден bambu-studio.sh
==> Проверка исходных файлов с помощью sha512sums...
BambuStudio ... Пропущено
BambuStudio.cpp.patch ... Пройдено
CMakeLists.txt.patch ... Пройдено
wxWidgets.cmake.patch ... Пройдено
bambu-studio.sh ... Пройдено
==> Удаление существующей директории $srcdir/...
==> Извлечение источников...
-> Создание рабочей копии репозитория BambuStudio...
Клонирование в 'BambuStudio'...
Готово.
Обновление файлов: 100% (6964/6964), готово.
==> Начало prepare()...
исправление файла BambuStudio/CMakeLists.txt
Hunk #1 успешно прошёл на 745 (сдвиг 54 строки).
==> Начало pkgver()...
==> Обновлённая версия: bambustudio-git 01.10.00.81.10.g733531b-1
==> Исходники готовы.
==> Создание пакета: bambustudio-git 01.10.00.81.10.g733531b-1 (Ср 06 Ноя 2024 16:07:23)
==> Проверка зависимостей во время выполнения...
==> Проверка зависимостей на этапе сборки...
==> ПРЕДУПРЕЖДЕНИЕ: Используется существующая директория $srcdir/
==> Начало pkgver()...
==> Удаление существующей директории $pkgdir/...
==> Начало build()...
CMake Warning (dev) at CMakeLists.txt:23 (project):
cmake_minimum_required() должен быть вызван перед вызовом этого верхнего уровня project()
пожалуйста, смотрите документацию по использованию в руководстве cmake-commands(7) для обоих команд.
Это предупреждение для разработчиков проекта. Используйте -Wno-dev, чтобы подавить его.
-- Идентификация компилятора C: GNU 13.3.0
-- Идентификация компилятора CXX: GNU 13.3.0
-- Определение информации о ABI компилятора C
-- Определение информации о ABI компилятора C - неудачно
-- Проверка работоспособности компилятора C: /usr/bin/gcc-13
-- Проверка работоспособности компилятора C: /usr/bin/gcc-13 - повреждено
CMake Error at /usr/share/cmake/Modules/CMakeTestCCompiler.cmake:67 (message):
Компилятор C
"/usr/bin/gcc-13"
не может скомпилировать простую тестовую программу.
Он завершает с выдачей:
Изменить директорию: '/tmp/makepkg/bambustudio-git/src/BambuStudio/deps/build/CMakeFiles/CMakeScratch/TryCompile-c94XFe'
Запустить команды сборки: /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_b88fe/fast
/usr/bin/make -f CMakeFiles/cmTC_b88fe.dir/build.make CMakeFiles/cmTC_b88fe.dir/build
make[1]: Вход в директорию '/tmp/makepkg/bambustudio-git/src/BambuStudio/deps/build/CMakeFiles/CMakeScratch/TryCompile-c94XFe'
Сборка C-объекта CMakeFiles/cmTC_b88fe.dir/testCCompiler.c.o
/usr/bin/gcc-13 -march=native -O2 -pipe -flto=auto -o CMakeFiles/cmTC_b88fe.dir/testCCompiler.c.o -c /tmp/makepkg/bambustudio-git/src/BambuStudio/deps/build/CMakeFiles/CMakeScratch/TryCompile-c94XFe/testCCompiler.c
Линковка C-исполняемого файла cmTC_b88fe
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b88fe.dir/link.txt --verbose=1
/usr/bin/gcc-13 -march=native -O2 -pipe -flto=auto ... -fuse-ld=mold -flto=auto -rdynamic CMakeFiles/cmTC_b88fe.dir/testCCompiler.c.o -o cmTC_b88fe
mold: фатальная ошибка: не удается открыть ...: Нет такого файла или директории
collect2: ошибка: ld вернула статус 1
make[1]: *** [CMakeFiles/cmTC_b88fe.dir/build.make:99: cmTC_b88fe] Ошибка 1
make[1]: Выход из директории '/tmp/makepkg/bambustudio-git/src/BambuStudio/deps/build/CMakeFiles/CMakeScratch/TryCompile-c94XFe'
make: *** [Makefile:127: cmTC_b88fe/fast] Ошибка 2
CMake не сможет правильно сгенерировать этот проект.
Стек вызовов (последний вызов первый):
CMakeLists.txt:23 (project)
-- Конфигурация неполная, произошли ошибки!
==> ОШИБКА: Произошел сбой в build().
Прерывание...
-> ошибка при создании: bambustudio-git - статус выхода 4
-> Не удалось установить следующие пакеты. Требуется ручное вмешательство:
bambustudio-git - статус выхода 4
Я предполагаю, что проблема в том, что команда mold не может понять “…” (вариативный список директорий?)
Ответ или решение
Судя по описанной проблеме, возникли сложности с установкой пакета bambustudio-git
с использованием yay
после обновления системы на Manjaro. Обратим внимание на основные моменты, которые ведут к ошибкам, и шаги, которые можно предпринять для их устранения.
Основные причины проблемы
-
Обновление
gcc
до экспериментальной версии: Как вы упомянули, после обновления системе был установленgcc
версии14.2.1+r134+gab884fffe3fc-1
. Это может быть причиной нестабильной работы компилятора, так как экспериментальные сборки могут содержать ошибки или несовместимости с другими компонентами. -
Проблемы с компоновщиком
mold
: Судя по логам, основной проблемой также является использование компоновщикаmold
, который не может корректно обработать команду линковки, выдавая ошибку "cannot open …: No such file or directory". Это может быть связано с неправильной настройкой окружения или параметров компиляции.
Шаги для устранения проблемы
1. Вернуться на стабильную версию gcc
Хотя вы пытались переустановить gcc-13
, это не сработало из-за зависимостей, которые тянут экспериментальную версию gcc
через пакет base-devel
.
Попробуйте удалить base-devel
, но учтите, что это может привести к удалению других важных пакетов.
sudo pacman -Rns base-devel
После этого попробуйте установить необходимый вам пакет с предыдущей версией gcc
:
sudo pacman -S gcc-13
2. Настройка переменных окружения
Убедитесь, что вы правильно установили переменные окружения, особенно если вы имеете в виду использование нескольких версий компилятора. Вы можете попробовать следующее:
export CC=gcc-13
export CXX=g++-13
export LDFLAGS="-fuse-ld=ld" # Или другой компоновщик, если 'mold' вызывает ошибки
Затем попробуйте снова установить пакет bambustudio-git
:
yay -S --noconfirm bambustudio-git
3. Принудительная установка зависимостей
Если вышеперечисленные шаги не сработают, может потребоваться принудительная установка зависимостей. Для этого вы можете использовать флаг --needed
для проверки, установлены ли все необходимые пакеты.
yay -S --needed --noconfirm base-devel
4. Варианты компиляции
Если проблема все еще сохраняется, стоит попробовать другие компоновщики или параметры компиляции к CMake. Например, вы можете временно исключить -fuse-ld=mold
из ваших флагов линковщика и посмотреть, удастся ли скомпилировать проект с помощью стандартного линковщика:
export LDFLAGS="${LDFLAGS/-fuse-ld=mold/-fuse-ld=ld}"
5. Проверка системной конфигурации
Рекомендуется также рассмотреть возможность отката до более стабильной версии компилятора, если все вышеперечисленное не приведет к нужному результату. Это можно сделать, изменив файл /etc/pacman.conf
, временно закомментировав или изменив репозитории, которые вы используете, или используя AUR для ручной установки стабильных версий.
Заключение
В случае, если ни одно из предложенных решений не помогает, возможно, стоит обратиться на форумы сообщества Manjaro или Arch, чтобы получить помощь от других пользователей, сталкивающихся с подобными проблемами. Также полезным будет следить за обновлениями пакетов, которые могут устранить ошибки калькуляции и линковки в новой версии компилятора.