сделать так, чтобы команда имела другое имя для gcc-12

Вопрос или проблема

Пытаюсь установить модули vmware, как показано здесь: https://superuser.com/a/1733280, но каждый раз, когда я пытаюсь запустить make, возникает следующая ошибка

  Ядро было собрано: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
  Вы используете:           gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0

Я не могу найти информацию об этом в интернете, мне нужна помощь, так как я не очень опытен в Linux в целом.

Когда Ubuntu (Canonical) компилирует ядро, они указывают архитектуру, и это может быть кросс-компиляция в их строке команд make. Пример из журнального файла для компиляции ядра mainline PPA:

make ARCH=x86 CROSS_COMPILE=x86_64-linux-gnu- HOSTCC=x86_64-linux-gnu-gcc-14 CC=x86_64-linux-gnu-gcc-14 RUSTC=rustc HOSTRUSTC=rustc RUSTFMT=rustfmt BINDGEN=bindgen KERNELRELEASE=6.13.0-061300rc1- CONFIG_DEBUG_SECTION_MISMATCH=y KBUILD_BUILD_VERSION="202412012327" CFLAGS_MODULE="-DPKG_ABI=061300rc1" PYTHON=python3 O=/home/kernel/COD/linux/debian/tmp-headers INSTALL_HDR_PATH=/home/kernel/COD/linux/debian/linux-libc-dev/usr -j32 headers_install

В результате получается следующая CONFIG_CC_VERSION_TEXT в конфигурационном файле ядра:

CONFIG_CC_VERSION_TEXT="x86_64-linux-gnu-gcc-14 (Ubuntu 14.2.0-4ubuntu2) 14.2.0"

Когда я компилирую ядро, я не выполняю кросс-компиляцию, и поэтому просто использую это (я всегда измеряю время компиляции ядра):

time make -s -j13 olddefconfig bindeb-pkg LOCALVERSION=-stock

В результате получается следующая строка в конфигурационном файле ядра:

CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0"

Но если я также укажу архитектуру и элементы кросс-компиляции:

time make ARCH=x86 CROSS_COMPILE=x86_64-linux-gnu- -s -j13 olddefconfig bindeb-pkg LOCALVERSION=-test

Тогда та же строка в конфигурационном файле ядра становится:

CONFIG_CC_VERSION_TEXT="x86_64-linux-gnu-gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0"

но в остальном остается без изменений.

Так что попробуйте добавить ARCH=x86 CROSS_COMPILE=x86_64-linux-gnu- в вашу команду make.

Ответ или решение

При установке модулей VMware в Ubuntu вы столкнулись с проблемой несовпадения версий компилятора при выполнении команды make. Данная проблема возникает из-за того, что ядро было собрано с использованием конкретной версии компилятора для целевой архитектуры, что требует указания правильных параметров для использования компилятора в процессе сборки модулей.

Что обозначают ошибки

Сообщение об ошибке указывает, что ядро было собрано с использованием компилятора x86_64-linux-gnu-gcc-12, а вы используете просто gcc-12. Это различие важно для системы сборки, так как первое указывает на то, что компилятор был настроен для кросс-компиляции, в то время как второй является стандартным компилятором, не привязанным к конкретной архитектуре.

Решение задачи

Чтобы разрешить эту проблему, вам необходимо передать параметры к команде make, указывающие на целевую архитектуру и кросс-компилятор. Ниже приведено пошаговое руководство по исправлению ошибки:

  1. Откройте терминал.

  2. Перейдите в директорию, где находятся исходные файлы модулей VMware.

  3. Выполните команду make с добавлением параметров архитектуры и кросс-компилятора:

    make ARCH=x86 CROSS_COMPILE=x86_64-linux-gnu-

    Эти параметры указывают на то, что вы собираете модули для архитектуры x86 и используете кросс-компилятор x86_64-linux-gnu-gcc, что позволяет убедиться, что версия компилятора соответствует требуемой для работы с вашим установленным ядром.

Примечания

  • Убедитесь, что необходимые пакеты для компиляции установлены. Это можно сделать с помощью команды:

    sudo apt install build-essential linux-headers-$(uname -r)
  • Если у вас возникают другие ошибки в процессе сборки, рекомендуется внимательно изучить их и пытаться исправить по аналогии с приведенным выше примером.

  • Использование параметров -j может значительно уменьшить время компиляции, но имейте в виду, что использование слишком большого числа потоков на слабом оборудовании может привести к перегреву или сбоям. Рекомендуется установить это значение в пределах от 1 до числа ядер вашего процессора.

Заключение

Следуя приведённым рекомендациям, вы сможете избежать конфликта версий компилятора и успешно собрать модули VMware на вашей системе Ubuntu. Если возникают дополнительные вопросы, обратитесь к документации или сообществу пользователей Linux для получения помочь или уточнений.

Оцените материал
Добавить комментарий

Капча загружается...