环境配置完成 运行build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC48 -a X64
Build environment: Linux-5.13.0-39-generic-x86_64-with-Ubuntu-20.04-focal
Build start time: 23:09:02, Apr.03 2022
WORKSPACE = /opt
PACKAGES_PATH = /opt/edk2:/opt/edk2-libc
ECP_SOURCE = /opt/edk2/EdkCompatibilityPkg
EDK_SOURCE = /opt/edk2/EdkCompatibilityPkg
EFI_SOURCE = /opt/edk2/EdkCompatibilityPkg
EDK_TOOLS_PATH = /opt/edk2/BaseTools
CONF_PATH = /opt/edk2/Conf
Architecture(s) = X64
Build target = DEBUG
Toolchain = GCC5
Active Platform = /opt/edk2/EmulatorPkg/EmulatorPkg.dsc
Flash Image Definition = /opt/edk2/EmulatorPkg/EmulatorPkg.fdf
Processing meta-data .. done!
Building ... /opt/edk2/MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf [X64]
Building ... /opt/edk2/MdePkg/Library/BaseLib/BaseLib.inf [X64]
make: 对“tbuild”无需做任何事。
Building ... /opt/edk2/MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf [X64]
Trim --asm-file -o /opt/Build/Emulator/DEBUG_GCC5/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.i -i /opt/Build/Emulator/DEBUG_GCC5/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/inc.lst /opt/edk2/MdePkg/Library/BaseLib/X64/Thunk16.nasm
Building ... /opt/edk2/EmulatorPkg/Library/SecPpiListLib/SecPpiListLib.inf [X64]
Usage: Trim.py [-s|-r|-a|--Vfr-Uni-Offset] [-c] [-v|-d <debug_level>|-q] [-i <include_path_file>] [-o <output_file>] [--ModuleName <ModuleName>] [--DebugDir <DebugDir>] [<input_file>]
Trim.py: error: no such option: --asm-file
Building ... /opt/edk2/EmulatorPkg/Library/SecPeiServicesLib/SecPeiServicesLib.inf [X64]
make: *** [GNUmakefile:412:/opt/Build/Emulator/DEBUG_GCC5/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.obj] 错误 2
make: 对“tbuild”无需做任何事。
build.py...
: error 7000: Failed to execute command
make tbuild [/opt/Build/Emulator/DEBUG_GCC5/X64/MdePkg/Library/BaseLib/BaseLib]
build.py...
: error F002: Failed to build module
/opt/edk2/MdePkg/Library/BaseLib/BaseLib.inf [X64, GCC5, DEBUG]
- Failed -
Build end time: 23:09:04, Apr.03 2022
Build total time: 00:00:02
pip install brotli
sudo apt install build-essential uuid-dev
sudo apt install acpica-tools
环境都按照了,网上说出现这个错误需要下载这些,但是依然报错
1 我一直是在ubuntu 16上搭建x86环境,因为用得比较少。更多的时候,是在windows10上用VS搭建的。Ubuntu 20我没有去试过,因为不想被各种编译器版本的问题缠着;
2 tianocore社区这块,写搭建环境的部分,不是特别好。我现在开发arm的环境,是在ubuntu 18上的,可以参考:
https://developer.arm.com/tools-and-software/open-source-software/firmware/edkii-uefi-firmware/building-edkii-uefi-firmware-for-arm-platforms
对在ubuntu 20上搭建可能会有所帮助(主要看前面工具部分);
brotli通过git更新submodules实现的,不用安装;acpi工具需要重新编译。
3 拷贝我之前的笔记,看看是否有帮助(ubuntu 16上安装的)
1.2 准备EDK2,edk2-libc,edk-platform
准备工具:bash$ sudo apt-get install build-essential uuid-dev iasl git gcc-5 nasm python3-distutils
实际上还缺一些:sudo apt install bison build-essential flex git uuid-dev python3-distutils
( python3-distutils-extra)
git clone git@gitee.com:luobing4365/edk2-libc.git
git clone git@gitee.com:luobing4365/acpica.git
git clone --branch edk2-stable202108 git@gitee.com:luobing4365/edk2.git
1.2.1 edk2的submodule处理
修改地址为自己的(.gitmodule):
[submodule "CryptoPkg/Library/OpensslLib/openssl"]
path = CryptoPkg/Library/OpensslLib/openssl
url = https://gitee.com/luobing4365/openssl.git
[submodule "SoftFloat"]
path = ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
url = https://gitee.com/luobing4365/berkeley-softfloat-3.git
[submodule "UnitTestFrameworkPkg/Library/CmockaLib/cmocka"]
path = UnitTestFrameworkPkg/Library/CmockaLib/cmocka
url = https://gitee.com/luobing4365/cmocka.git
[submodule "MdeModulePkg/Universal/RegularExpressionDxe/oniguruma"]
path = MdeModulePkg/Universal/RegularExpressionDxe/oniguruma
url = https://gitee.com/luobing4365/oniguruma.git
[submodule "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli"]
path = MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
url = https://gitee.com/luobing4365/brotli.git
[submodule "BaseTools/Source/C/BrotliCompress/brotli"]
path = BaseTools/Source/C/BrotliCompress/brotli
url = https://gitee.com/luobing4365/brotli.git
ignore = untracked
[submodule "RedfishPkg/Library/JsonLib/jansson"]
path = RedfishPkg/Library/JsonLib/jansson
url = https://gitee.com/luobing4365/jansson.git
进入edk2,git submodule update --init
1.2.2 编译acpica
export WORKSPACE=$PWD
make -C $WORKSPACE/acpica
1.2.3 工作路径和平台路径
新建myexport.sh,填入以下内容:
export WORKSPACE=$PWD
export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-libc
export IASL_PREFIX=$PWD/acpica/generate/unix/bin/
export PYTHON_COMMAND=/usr/bin/python3
1.2.4 编译基本工具
robin@robin-VirtualBox:~/jmuefi$ source ./myexport.sh
robin@robin-VirtualBox:~/jmuefi$ cd edk2/
robin@robin-VirtualBox:~/jmuefi/edk2$ make -C BaseTools/
1.2.5 编译EmulatorPkg
robin@robin-VirtualBox:~/jmuefi$ source ./myexport.sh
robin@robin-VirtualBox:~/jmuefi$ cd edk2/
robin@robin-VirtualBox:~/jmuefi/edk2$. edksetup.sh
修改Conf/target.txt
GCC5 X64
robin@robin-VirtualBox:~/jmuefi/edk2$ build –D ADD_SHELL_STRING
(stable201108的模拟器Host好像无法运行)
1.2.6 一些可能的错误:
A: 缺少sys/cdefs.h sudo apt install libc6-dev-i386
B 缺少X11/Xlib.h $sudo apt-get install libx11-dev libx11-dev:i386
C 缺少X11/extensions /XShm.h sudo apt-get install libxext-dev libxext-dev:i386
以上过程用Ubuntu16.04搭建成功,但Ubuntu20.04还是不行
Toolchain = GCC5
明明是GCC5为啥参数那里写的是GCC48
尝试
build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64