Ubuntu 16.04.3 LTS - LINUX_VERSION_CODE кажется неправильным

Я обнаружил, что LINUX_VERSION_CODE, определенный в /usr/include/linux/version.h на моей машине Ubuntu 16.04.3 LTS, эквивалентен 4.4.90, тогда как ожидается, что он будет 4.10.0.

bash% lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial bash% bash% uname -r 4.10.0-28-generic bash% cat /usr/include/linux/version.h #define LINUX_VERSION_CODE 263258 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) bash% perl my $version=263258; my $a=($version >> 16) & 0xff; my $b=($version >> 8) & 0xff; my $c=$version & 0xff; print "$version -> $a.$b.$c\n"; 263258 -> 4.4.90

Следовательно, макрос препроцессора как следующий не работает.

#include <linux/version.h> #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0). // do something #endif

Означает ли это, что у меня есть проблема с установкой? Или мы не рекомендуем использовать LINUX_VERSION_CODE на Ubuntu?

0
задан 5 December 2017 в 13:26

2 ответа

Похоже, что у вас установлен файл с определенными версиями ядра, который не соответствует вашему запущенному ядру, возможно. Раньше был мета-пакет, который бы поддерживал текущий, несмотря ни на что.

Вот ссылка

0
ответ дан 18 July 2018 в 01:49

Похоже, что у вас установлен файл с определенными версиями ядра, который не соответствует вашему запущенному ядру, возможно. Раньше был мета-пакет, который бы поддерживал текущий, несмотря ни на что.

Вот ссылка

0
ответ дан 24 July 2018 в 17:27
  • 1
    Привет, RobotHumans, Спасибо за помощь. Заголовки linux-заголовков и linux-headers-generic устанавливаются следующим образом, а соответствующие заголовки ядра можно найти в / usr / src в моей системе. Ожидают ли эти пакеты обновления заголовков /usr/include/linux/version.h? Если это так, моя установка была чем-то неправильным. Или LINUX_VERSION_CODE в /usr/include/linux/version.h должен быть старше версии uname -r? – Ryujiro Shibuya 6 December 2017 в 05:19
  • 2
    Может быть, ошибка. Мета-пакет должен означать, что /usr/include/linux/version.h должен отражать последнюю версию основного ядра, установленную на вашем ПК. Использование PPA, вероятно, сломает его, но это не ошибка. Это ты не делаешь. Итак, если вы установили PPG ядра, я бы не ожидал, что метапакет будет отражать эти данные, но uname будет. – RobotHumans 6 December 2017 в 05:37
  • 3
    Благодарю. Позвольте мне проверить, установлен ли какой-либо соответствующий PPA в системе. – Ryujiro Shibuya 6 December 2017 в 06:30
  • 4
    Я думал, что установка dpkg «linux-headers-4.10.0-28» и "linux-headers-4.10.0-28-generic" будут мета-пакеты ядра, но я не прав? apt-get install linux-generic linux-headers-generic попытается установить еще одну версию пакетов (4.4.0-101). – Ryujiro Shibuya 6 December 2017 в 12:15
  • 5
    Это пакеты, специфичные для конкретной версии. Итак, да, ты сломал это. Если вы хотите установить их для каждой версии, вам нужно изменить ссылку в / usr / src / linux, чтобы указать на правильную версию ядра. Следовательно, люди используют Linux-заголовки или метапакеты linux-src. Они, по крайней мере, на ubuntu, хотя они никогда не делали этого, отменили эту ссылку для последнего установленного ядра. – RobotHumans 6 December 2017 в 15:15

Другие вопросы по тегам:

Похожие вопросы: