积分 126 最后登录 2023-12-23 精华 0 阅读权限 20 主题 16 UID 957658 帖子 226 PB币 148 威望 6 贡献 0 技术 17 活跃 312
UID 957658 帖子 226 PB币 148 贡献 0 技术 17 活跃 312
发表于 2019-8-7 14:41:45
IP属地上海
| 显示全部楼层
本帖最后由 ghostex 于 2019-8-10 13:31 编辑
编译Clover
虽然Clover可以在各种操作系统下被编译出来,但是由于咱是折腾黑果的,所以就以macOS为例来讲了。
为了成功编译Clover,需要按照顺序进行以下步骤:
下载并安装XCode。其作用是:用于编译Clover源代码。里面提供了各种程序和编译工具。其中XCode要安装于“应用程序”文件夹(/Applications) 找一个合适的位置,新建一个文件夹。然后打开终端程序 ,使用cd命令,进入这个新建的文件夹。我们可以选择直接在“文档”文件夹中建立(注意要保证当前分区的硬盘可用空间至少为1G字节): mkdir ~/Documents/clover_src_svn
cd ~/Documents/clover_src_svn 使用svn从官方代码仓库中获取(签出)Clover的源代码,在刚才的这个终端窗口中,执行以下命令(最后那个Clover是目标文件夹的名称,是固定不能变的): svn checkout https://svn.code.sf.net/p/cloverefiboot/code/ Clover
经过漫长的等待(根据网络情况而定 能翻墙的话下载速度会比较快),完成以上3个步骤,我们就可以开始进行真正的编译过程了 使用合适的纯文本编辑工具vi/vim/nano,编辑Clover目录中的buildme脚本,修改TOOLCHAIN_DIR变量的值 找到
TOOLCHAIN_DIR=${TOOLCHAIN_DIR:-$(dirname $EDK2ROOT)/opt/local}
改为
TOOLCHAIN_DIR="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr"
由于Clover使用了其他几种工具、开源软件/代码来综合构建,所以buildme这个脚本会根据你mac系统中实际的组件情况,先下载和安装这些组件然后才开始真正的编译过程。 在这个过程中,会自动下载edk2项目组件,并将其解压到clover_src_svn文件夹中,与代码所在的Clover文件夹并列存在(会有一大堆文件夹出现)。
还会下载、编译、安装nasm、gettext、cctools等组件。
其中gettext组件的编译和安装比较繁琐耗时,又依赖python和java环境。为了方便大家,我在这里给大家提供编译好的gettext组件。只需要在终端窗口的命令行中,设置PATH变量,使得buildme脚本能够找到它即可使用。
下载附件里面的gettext组件,解压到刚才建立的clover_src_svn下。此时gettext文件夹下应该具有可执行程序gettext和一个dylib。然后设置以下环境变量的值用于在当前终端环境中,执行gettext程序: export PATH=~/Documents/clover_src_svn/gettext:$PATH
export LD_LIBRARY_PATH=~/Documents/clover_src_svn/gettext:$LD_LIBRARY_PATH
历史性的时刻终于来到了。在Clover文件夹中,执行buildme脚本,开始构建Clover(此过程会自动下载编译安装缺少的组件,需要硬盘空间大几百兆,10分钟左右的构建时间) cd ~/Documents/clover_src_svn/Clover
./buildme
(注意严格按照上述文字执行脚本和程序命令)
然后按下1键回车,选择1) build Clover
如果出现了询问是否下载解压edk2组件的情况,直接按下y键回车即可
如果编译成功完成,会有以下内容输出: Done!
Generating BootSectors
make: Nothing to be done for `all'.
Done!
实际上到这里就完成了编译,以下是编译脚本继续问你接下来想做什么。
------------------------------------------------------------------------
buildme Beta, Clover v2.5k r5036
EDKII in use: vUDK2018
Patches in use: Patches_for_UDK2018
1) build Clover 5) update Clover 9) show diff
2) make pkg 6) update edk2 10) quit
3) make iso 7) status
4) build all 8) check remote changes
Please enter your choice:
接下来选择2或3,就可以把编译结果输出为我们常见的格式。其中,选择3之后,会在生成ISO镜像文件的同时,在 clover_src_svn/Clover/CloverPackage/sym/CloverCD 中生成未打包和压缩的Clover完整结构与各种文件!可以直接取用,十分方便!!
至此,编译过程就顺利结束了。
后续更新
以后如果Clover作者有新的功能添加或更新,只需要在Clover文件夹中执行buildme脚本,并且选择5) update Clover,即可获取到最新的源代码。然后再选1进行build,接着再选2或3进行结果的输出或打包即可。
辛苦码字半天,希望对大家有用~~~
附:理论上使用XCode Command Line Tools也是可以编译Clover的,只是在第5步配置TOOLCHAIN_DIR时,需要根据实际情况来配置。但是其实这个CLT我未做测试,因为我本机是有XCode的:P
本文2019-8-10更新
以由于本文的所有的环境变量的设置,都是针对于当前终端窗口 的(不影响本机的全局设置),所以在新的终端窗口中,在运行buildme脚本之前,一定要在新的终端窗口中重新设置以下环境变量 : export PATH=~/Documents/clover_src_svn/gettext:$PATH
export LD_LIBRARY_PATH=~/Documents/clover_src_svn/gettext:$LD_LIBRARY_PATH 另外,烦请大家更新一下附件中的gettext组件。之前的版本里面缺少一个msgmerge程序,导致Buildme脚本的build pkg选项执行失败。这次索性把gettext的全部组件打包上来~~~
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册