EDK2 (среда разработки для UEFI) не удалось после выполнения тестовой сборки

Я использую EDK2 и Visual Studio 2019. Я выполнил инструкции по настройке среды сборки EDKII в системах Windows. После отправки следующей команды "edksetup.bat Rebuild" в командной строке Windows я получил следующее сообщение.

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

3 ответа

Вам нужно проверить (и собрать) различные подмодули.

Бежать git submodule update --initв вашем каталоге edk2, и вы должны получить вывод, подобный этому:

      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!

Я начал с другого места и столкнулся с той же проблемой. После некоторого поиска кажется, что источник модуля сжатия Brotli был удален из дерева и заменен подмодулем около 4 месяцев назад. Я новичок в этом материале и не знаю, как включить подмодуль в главное дерево, поэтому я пошел на более низкий уровень.

Есть два места, где нужен код Brotli:

  1. <your_edk2root>\BaseTools\Source\C\BrotliCompress\brotli\
  2. <your_edk2root>\MdeModulePkg\Library\BrotliCustomDecompressLib\brotli\ (где - это место, где вы клонировали репозиторий EDK2, включая букву диска).

Исходный код Brotli доступен по адресу https://github.com/google/brotli.

Я загрузил zip-файл и просто извлек все из папки brotli-master в каждый из двух предыдущих путей (у вас должны получиться каталог ac, каталог docs и куча файлов в каждом из этих путей). Пробегedksetup.bat Rebuild снова из , и он должен скомпилировать, связать и установить.

Еще не пробовал создать UEFI, но с нетерпением жду этого!

О, я забыл упомянуть, что для VS2019 TOOL_CHAIN_TAG должен быть VS2019, а не VS2019x86.

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