【发布时间】:2021-09-21 09:32:58
【问题描述】:
我正在尝试使用本教程在 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: /* vGPU VM 总线通道实例 ID */
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);
如何更改代码,以便编译器将初始化表达式读取为常量?
【问题讨论】:
-
我认为代码依赖于允许这种初始化形式的最新版本的 GCC。它不适用于较旧的 GCC 版本。应该更改代码以与可用于构建内核的最低 GCC 版本兼容。我猜这个问题会在微软代码被上游化到 Linux 时被发现。
-
安装 gcc 9 解决了这个问题
标签: compiler-errors linux-kernel wsl-2 initializer