编译龙芯BIOS记录

记录一下这两天编译龙芯BIOS折腾的那么点事。

说一下龙芯的代码,其实就是基于UDK2018进行定制的,定制的量比较小,加了几个龙芯的Package,大多数无用的Package都没有去掉,如Nt32Pkg,OvmfPkg等。

编译环境环境方面,需要使用到Linux系统,经过折腾,deepin,ubuntu,centos都可以编译。以下是编译步骤:

〇、准备

确保当前系统已经安装基础的编译软件,如make,python,uuid-dev,iasl,未安装的执行:

 sudo apt install make python uuid-dev iasl

一、安装编译器

安装编译器

 sudo cp -fr gcc-4.4.0-pmon /opt
 sudo cp -fr cross-gcc-4.9.3-n64-loongson-rc6.1 /opt
 sudo cp -fr gcc-4.4.7-7215-n64-loongson /opt
  • 设置如下环境变量:
sudo gedit ~/.bashrc

在文件末尾添加下面几行:

CC_PREFIX=/opt/cross-gcc-4.9.3-n64-loongson-rc6.1

export LD_LIBRARY_PATH=/opt/gcc-4.4.0-pmon/lib:$LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=$CC_PREFIX/usr/lib:$LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=$CC_PREFIX/usr/x86_64-unknown-linux-gnu/mips64el-loongson-linux/lib/:$LD_LIBRARY_PATH:
export CROSS_COMPILE=mipsel-linux-
export PATH=/opt/gcc-4.4.7-7215-n64-loongson/usr/bin:/opt/gcc-4.4.0-pmon/bin/:$PATH
export LD_LIBRARY_PATH=/opt/gcc-4.4.7-7215-n64-loongson/usr/x86_64-unknown-linux-gnu/mips64el-redhat-linux/lib/:$LD_LIBRARY_PATH:
  • 最后再执行一下
source ~/.bashrc

使修改的文件生效。

这部分引用自龙芯官网,略有修改:http://www.loongnix.org/index.php/PMON%E7%BC%96%E8%AF%91%E6%96%B9%E6%B3%95

二、安装32位系统兼容库

假如系统用的事32位的,就无需执行此步骤。

为什么要安装32位兼容库?因为上面所安装的GCC编译器(gcc-4.4.0-pmon)是32位的,这一点上面官网的链接也有说明,他们要求使用32位的系统,所以在64位的系统下只能安装兼容库了。

Ubuntu安装兼容库:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32ncurses5 lib32z1

其它发行版Linux安装直接百度即可。

三、Build BaseTools

进入BaseTools目录,执行以下命令:

make clean
make

注意本地GCC&G++版本保持在5或以下,高版本需要安装低版本,参考-> Ubuntu最新版本快速安装GCC5、GCC4+

四、Build BIOS

做完上面几个步骤便可以进行编译了。编译前需根据CPU类型设置配置文件,配置文件位于LoongsonDemoBoardPkg/Script/Config,示例使用的是Ls3a40007a1000Single.cfg。

确定配置文件后执行如下命令:

cd LoongsonDemoBoardPkg/Script/
cp Config/Ls3a40007a1000Single.cfg ./config

最后执行:

./build.sh

注意:一定要把当前路径切换到Script再执行build.sh,不然会Build过程出现Error。

五、其它问题

记录一下环境搭建过程中出现的问题

  • error while loading shared libraries: libopcodes-2.24.so: cannot open shared object file: No such file or directory

经过搜索,是系统调用不到共享库导致的,而libopcodes-2.24.so这个库在龙芯的交叉编译器已经包含在里边了,需要将交叉编译器的共享库的路径加入系统变量即可。

CC_PREFIX=/opt/cross-gcc-4.9.3-n64-loongson-rc6.1
export LD_LIBRARY_PATH=$CC_PREFIX/usr/x86_64-unknown-linux-gnu/mips64el-loongson-linux/lib/:$LD_LIBRARY_PATH:
  • build BaseTools 出现找不到uuid.h

 

安装 uuid-dev

sudo apt install uuid-dev
  • Build过程出现BaseTools C Tool binary was not found

出现这个问题是BaseTools未重新编译导致的,进入BaseTools目录后执行make即可

  • mipsel-linux-gcc: not found

在已经配置好pmon环境变量的情况下还出现这个问题,那便是没有安装32位兼容库的原因导致的,因为32位的可执行文件在64位是无法被识别的

*在虚拟机编译的注意一定要把代码复制到虚拟机,直接共享文件编译会报错!

2020.11.26更新

版权声明:
作者:bin
链接:https://ay123.net/mystudy/654/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
编译龙芯BIOS记录
记录一下这两天编译龙芯BIOS折腾的那么点事。 说一下龙芯的代码,其实就是基于UDK2018进行定制的,定制的量比较小,加了几个龙芯的Package,大多数无用的Packa……
<<上一篇
下一篇>>