Intereting Posts
несколько контейнеров lxc, совместно использующих один и тот же пул ресурсов процессора и памяти RHEL – навсегда разоблачить все подпапки и файлы -bash: синтаксическая ошибка около неожиданного токена `; ' Последствия сбоя SWAP bumblebee-status возвращает ошибку в i3wm, в то время как i3status и i3блоки работают нормально Я изменил свой PATH, и теперь для каждой команды он возвращает команду «не найден» Редактор Nano поверх экрана в терминале не является полноэкранным Связывание одного ключа (например, «F1») с несколькими клавишами (например, «Ctrl + C») в Gnome Перенаправить ввод в несколько разных файлов вывода Разрешение запрещено при запуске скрипта через ssh Удалить сообщение, отображаемое при каждом запуске ZSH (с установленным oh-my-zsh) Почему прокси-сервер PCI не передает мое устройство гостевой ОС? CUPS libusbx-devel требуется ошибка при попытке создать чашки-1.7.1 из источника Нет сетей для Centos под VirtualBox Как автоматически заставить диски fsck после сбоя в `systemd`?

Какие последствия могут возникнуть в результате использования альтернативной версии GCC для компиляции ядра?

Относится к:

Не удается скомпилировать ядро: ошибка, ядро ​​не поддерживает режим PIC

У меня также была эта проблема, вместо исправления;

Я настроил альтернативы с другой версией gcc, перепрыгнув с v4 на v5, теперь она компилируется.

$ update-alternatives --config gcc There are 3 choices for the alternative gcc (providing /usr/bin/gcc). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/gcc-6 30 auto mode 1 /usr/bin/gcc-4.8 10 manual mode * 2 /usr/bin/gcc-5 20 manual mode 3 /usr/bin/gcc-6 30 manual mode 

Какие проблемы могут возникнуть, есть ли наилучшая практика для выбора версии GCC для компиляции ядра?

Система – Debian Stretch.

Согласно документации ядра , вы можете использовать любую версию GCC, начиная с 3.2. На практике, однако, я не думаю, что более старые версии GCC, как правило, много тестируются с помощью сборки ядра, поэтому вам лучше использовать более новые версии GCC (но не слишком новые, есть проблемы с GCC 6).

В Debian вы можете найти соответствующую версию GCC, посмотрев зависимости сборки исходного кода ядра или зависимости от содержимого пакета ядра. Таким образом, linux-headers-4.7.0-1-amd64 зависит от linux-compiler-gcc-5-x86 который зависит от gcc-5 .

Вы можете получить правильное значение CC автоматически, потянув значения из /usr/src/linux-headers-$(uname -r)/.kernelvariables (после установки linux-headers-$(uname -r) при необходимости). Например, моя система в настоящее время имеет

 override ARCH = x86 override KERNELRELEASE = 4.7.0-1-amd64 CCACHE = ccache CC = $(if $(DEBIAN_KERNEL_USE_CCACHE),$(CCACHE)) $(CROSS_COMPILE)gcc-5 ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) override CROSS_COMPILE = $(DEB_HOST_GNU_TYPE)- endif 

Использование этого CC создаст рабочее ядро ​​(или модуль для работающего ядра) независимо от GCC по умолчанию (я использую GCC 6 по умолчанию).