Строительное ядро; WSL2; ошибка: элемент инициализатора не является постоянным

Я пытаюсь собрать ядро ​​ в Ubuntu-18.04 WSL2 с помощью этого руководства: https://www.frakkingsweet.com/running-pi-gen-on-wsl2/

Настройка прошла нормально. Но при его создании:

сделать KCONFIG_CONFIG = Microsoft / config-wsl.new -j4

появилась эта ошибка:

drivers / hyperv / dxgkrnl / dxgmodule.c: 422: 39: ошибка: элемент инициализатора не является постоянным const int DXGK_VMBUS_VERSION_OFFSET = DXGK_VMBUS_CHANNEL_ID_OFFSET +

Файл dxgmodule, в котором возникает ошибка, является файлом C. Содержание файла:

419: / * ID экземпляра канала шины VM vGPU * /

420: константа int DXGK_VMBUS_CHANNEL_ID_OFFSET = 192;

421: / * DXGK_VMBUS_INTERFACE_VERSION (u32) * /

422: const int DXGK_VMBUS_VERSION_OFFSET = DXGK_VMBUS_CHANNEL_ID_OFFSET +

423: sizeof (guid_t);

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


person Tillmann2018    schedule 12.07.2021    source источник
comment
Я думаю, что код основан на последней версии GCC, в которой разрешена такая форма инициализации. Это не работает в более старых версиях GCC. Код необходимо изменить, чтобы он был совместим с минимальной версией GCC, которую можно использовать для сборки ядра. Я предполагаю, что эта проблема будет обнаружена, если и когда код Microsoft будет переведен на Linux.   -  person Ian Abbott    schedule 12.07.2021
comment
Также см. Этот вопрос: Почему «элемент инициализатора не является константой»… больше не работает?.   -  person Ian Abbott    schedule 12.07.2021
comment
установка gcc 9 решила проблему   -  person Tillmann2018    schedule 13.07.2021


Ответы (1)


У меня есть решение.

Я изменил это на

419: / * ID экземпляра канала шины VM vGPU * /

420: константа int DXGK_VMBUS_CHANNEL_ID_OFFSET = 192;

421: / * DXGK_VMBUS_INTERFACE_VERSION (u32) * /

422: const int DXGK_VMBUS_VERSION_OFFSET = 192 +

423: sizeof (guid_t);

person Tillmann2018    schedule 12.07.2021