0

我正在使用 EDK2 和 Visual Studio 2019。我按照说明在 Windows 系统上设置 EDKII 构建环境。在 Windows 命令行上发送以下命令“edksetup.bat Rebuild”后,我收到以下消息。

subprocess not exit successfully
Error while execute command 'nmake all' in direcotry C:\edk2\BaseTools\Source\C\BrotliCompress

...

LINK : fatal error LNK1181: Eingabedatei "brotli\c\tools\brotli.obj" kann nicht geffnet werden.
NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX86\x86\link.exe"": Rckgabe-Code "0x49d"
Stop.
NMAKE : fatal error U1077: "if": Rückgabe-Code "0x1"
Stop.
NMAKE : fatal error U1077: "if": Rückgabe-Code "0x1"
Stop.

是因为 Visual Studio 2019 的兼容性还是“BrotliCompress”有什么问题?我将标签更改为 TOOL_CHAIN_TAG = VS2019x86。但它没有用。为了 VS2019 兼容性,我还应该改变什么?与 NMAKE 文件有什么关系?

我测试了旧版本的 EDK2,它可以工作。但问题是我使用的是 VS2019,我想使用 edk2-stable201911。旧版本 (edk2-stable201908) 最多只能支持 VS2017。在 tools_de.txt 中没有 VS2019 的“通用路径宏”。上述错误是使用edk2-stable201911的结果

4

2 回答 2

1

您需要检查(并构建)各种子模块。

在你的 edk2 目录中运行git submodule update --init,你应该得到类似这样的输出:

Submodule 'BaseTools/Source/C/BrotliCompress/brotli' (https://github.com/google/brotli) registered for path 'BaseTools/Source/C/BrotliCompress/brotli'
Submodule 'CryptoPkg/Library/OpensslLib/openssl' (https://github.com/openssl/openssl) registered for path 'CryptoPkg/Library/OpensslLib/openssl'
Submodule 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli' (https://github.com/google/brotli) registered for path 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli'
Submodule 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma' (https://github.com/kkos/oniguruma) registered for path 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma'
Submodule 'RedfishPkg/Library/JsonLib/jansson' (https://github.com/akheron/jansson) registered for path 'RedfishPkg/Library/JsonLib/jansson'
Submodule 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka' (https://git.cryptomilk.org/projects/cmocka.git) registered for path 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka'
Cloning into '<path-to-edk2>/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3'...
Cloning into '<path-to-edk2>/BaseTools/Source/C/BrotliCompress/brotli'...
Cloning into '<path-to-edk2>/CryptoPkg/Library/OpensslLib/openssl'...
Cloning into '<path-to-edk2>/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli'...
Cloning into '<path-to-edk2>/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma'...
Cloning into '<path-to-edk2>/RedfishPkg/Library/JsonLib/jansson'...
Cloning into '<path-to-edk2>/UnitTestFrameworkPkg/Library/CmockaLib/cmocka'...
Submodule path 'ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3': checked out 'b64af41c3276f97f0e181920400ee056b9c88037'
Submodule path 'BaseTools/Source/C/BrotliCompress/brotli': checked out '666c3280cc11dc433c303d79a83d4ffbdd12cc8d'
Submodule path 'CryptoPkg/Library/OpensslLib/openssl': checked out 'e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72'
Submodule path 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli': checked out '666c3280cc11dc433c303d79a83d4ffbdd12cc8d'
Submodule path 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma': checked out 'abfc8ff81df4067f309032467785e06975678f0d'
Submodule path 'RedfishPkg/Library/JsonLib/jansson': checked out 'e9ebfa7e77a6bee77df44e096b100e7131044059'
Submodule path 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka': checked out '1cc9cde3448cdd2e000886a26acf1caac2db7cf1'

您可能还需要先编译东西;我不知道如何在 Windows 上做到这一点,但make -C <path-to-edk2>/BaseTools/Source/C在 Linux 上是票。

完成这两项后,您应该能够成功构建 EDK2!

于 2021-03-03T19:15:28.053 回答
0

我从不同的地方开始,遇到了同样的问题。经过一番挖掘,大约 4 个月前,Brotli 压缩模块的源似乎已从树中删除并替换为子模块。我是这个东西的新手,不知道如何将子模块合并到主树中,所以我去了低级。

有两个地方需要 Brotli 代码:

  1. <your_edk2root>\BaseTools\Source\C\BrotliCompress\brotli\
  2. <your_edk2root>\MdeModulePkg\Library\BrotliCustomDecompressLib\brotli\(其中 <your_edk2root> 是您克隆 EDK2 存储库的位置,包括驱动器号)。

Brotli 源代码可在https://github.com/google/brotli获得。

我下载了 zip 文件,然后简单地将 brotli-master 文件夹中的所有内容解压缩到前两个路径中的每一个(您最终应该得到 ac 目录和一个 docs 目录以及每个路径中的一堆文件)。edksetup.bat Rebuild从 <your_edk2root> 再次运行,它应该会编译、链接和安装。

还没有尝试构建任何 UEFI,但期待它!

注意:对于 VS2019,TOOL_CHAIN_TAG 应该是 VS2019,而不是 VS2019x86。

于 2020-08-06T19:25:43.737 回答