zoukankan      html  css  js  c++  java
  • EDK2开发环境搭建

    EDK2开发环境搭建

    来源 https://blog.csdn.net/rikeyone/article/details/80759724

    EDK2全称为“uEFI Development Kit”,是intel开源的一套符合UEFI标准的实现。

    edk2环境搭建

    代码下载

    git clone https://github.com/tianocore/edk2.git

    安装编译环境
    sudo apt-get install build-essential uuid-dev nasm


    edk2编译:命令行编译

    1.编译base tool
    export WORKSPACE=dir/to/edk2
    make -C $WORKSPACE/BaseTools

    2.初始化编译环境
    cd $WORKSPACE
    source edksetup.sh

    3.命令行编译platform pkg
    build -p $WORKSPACE/EmulatorPkg/EmulatorPkg.dsc -a X64 -b DEBUG -t GCC5 -D BUILD_64 -D UNIX_SEC_BUILD -n 3
    option说明:
    -p PLATFORMFILE: 目标平台描述文件
    -a TARGETARCH: 目标平台X64/IA32
    -b BUILDTARGET: 可选项(DEBUG, RELEASE, NOOPT),将只编译dsc文件中特定的模块
    -m MODULEFILE: 编译目标module
    -t TOOLCHAIN : 使用目标编译器编译
    -n THREADNUMBER : 多线程编译
    -D MACROS: Macro格式: "Name [= Value]",传入宏定义


    edk2编译 :配置文件编译

    除了上面介绍的命令行,可以通过配置文件来编译目标,对应的配置文件目录在edk2/Conf中:

    Linux@x86_64: ~/edk2 $ ls Conf/
    BuildEnv.sh build_rule.txt target.txt tools_def.txt

    target.txt 文件内容

    #
    #  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
    #
    #  SPDX-License-Identifier: BSD-2-Clause-Patent
    #
    #
    #  ALL Paths are Relative to WORKSPACE
    
    #  Separate multiple LIST entries with a SINGLE SPACE character, do not use comma characters.
    #  Un-set an option by either commenting out the line, or not setting a value.
    
    #
    #  PROPERTY              Type       Use         Description
    #  ----------------      --------   --------    -----------------------------------------------------------
    #  ACTIVE_PLATFORM       Filename   Recommended Specify the WORKSPACE relative Path and Filename
    #                                               of the platform description file that will be used for the
    #                                               build. This line is required if and only if the current
    #                                               working directory does not contain one or more description
    #                                               files.
    ACTIVE_PLATFORM       = EmulatorPkg/EmulatorPkg.dsc
    
    #  TARGET                List       Optional    Zero or more of the following: DEBUG, RELEASE, NOOPT
    #                                               UserDefined; separated by a space character.
    #                                               If the line is missing or no value is specified, all
    #                                               valid targets specified in the platform description file
    #                                               will attempt to be built. The following line will build
    #                                               DEBUG platform target.
    TARGET                = DEBUG
    
    #  TARGET_ARCH           List       Optional    What kind of architecture is the binary being target for.
    #                                               One, or more, of the following, IA32, IPF, X64, EBC, ARM
    #                                               or AArch64.
    #                                               Multiple values can be specified on a single line, using
    #                                               space characters to separate the values.  These are used
    #                                               during the parsing of a platform description file,
    #                                               restricting the build output target(s.)
    #                                               The Build Target ARCH is determined by (precedence high to low):
    #                                                 Command-line: -a ARCH option
    #                                                 target.txt: TARGET_ARCH values
    #                                                 DSC file: [Defines] SUPPORTED_ARCHITECTURES tag
    #                                               If not specified, then all valid architectures specified
    #                                               in the platform file, for which tools are available, will be
    #                                               built.
    TARGET_ARCH           = IA32
    
    #  TOOL_DEFINITION_FILE  Filename  Optional   Specify the name of the filename to use for specifying
    #                                             the tools to use for the build.  If not specified,
    #                                             WORKSPACE/Conf/tools_def.txt will be used for the build.
    TOOL_CHAIN_CONF       = Conf/tools_def.txt
    
    #  TAGNAME               List      Optional   Specify the name(s) of the tools_def.txt TagName to use.
    #                                             If not specified, all applicable TagName tools will be
    #                                             used for the build.  The list uses space character separation.
    TOOL_CHAIN_TAG        = VS2015x86
    
    # MAX_CONCURRENT_THREAD_NUMBER  NUMBER  Optional  The number of concurrent threads. If not specified or set
    #                                                 to zero, tool automatically detect number of processor
    #                                                 threads. Recommend to set this value to one less than the
    #                                                 number of your computer cores or CPUs. When value set to 1,
    #                                                 means disable multi-thread build, value set to more than 1,
    #                                                 means user specify the thread number to build. Not specify
    #                                                 the default value in this file.
    # MAX_CONCURRENT_THREAD_NUMBER = 1
    
    
    # BUILD_RULE_CONF  Filename Optional  Specify the file name to use for the build rules that are followed
    #                                     when generating Makefiles. If not specified, the file:
    #                                     WORKSPACE/Conf/build_rule.txt will be used
    BUILD_RULE_CONF = Conf/build_rule.txt

    1.编译base tool
    export WORKSPACE=dir/to/edk2
    make -C $WORKSPACE/BaseTools

    2.初始化编译环境
    cd $WORKSPACE
    source edksetup.sh

    本步骤把build命令加入的环境变量中之外,还会生成默认的Conf文件,我们需要根据自己的需要重新配置对应文件。

    3.配置target.txt
    ACTIVE_PLATFORM = EmulatorPkg/EmulatorPkg.dsc
    TARGET = DEBUG
    TARGET_ARCH = X64
    TOOL_CHAIN_TAG = GCC5
    MAX_CONCURRENT_THREAD_NUMBER = 9
    BUILD_RULE_CONF = Conf/build_rule.txt

    4.开始编译
    Linux@x86_64: ~/edk2 $ build -D BUILD_64 -D UNIX_SEC_BUILD

    通过配置文件的方式,大大简化了命令行的输入,如果命令行传入了相同的配置参数,则会覆盖配置文件target.txt中的定义。

    edk2编译清除:

    清除BaseTool
    Linux@x86_64: ~/edk2 $ make -C BaseTools clean

    清除目标板编译文件
    build clean
    build cleanall


    Emulator模拟器运行

    EmulatorPkg/build.sh run

    ============== End

  • 相关阅读:
    新的工作电脑 神州优雅A550i7
    职责链模式(Chain of Responsibility)
    访问者模式(Visitor)
    单例模式(Singleton)
    解释器模式(Interpreter)
    迭代器模式(Iterator)
    解决 Visual Stuido 工具栏中的工具重置后,恢复回来。
    WCF 一步一步 发布 WCF服务 到 Windows 服务 (图)
    桥接模式(Bridge)与合成/聚合复用原则(CARP)
    dbentry访问带密码的Access
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/11328927.html
Copyright © 2011-2022 走看看