服务器上的代码直接能用,下到本地后编译不过,重新梳理了下编译环境。
硬件环境要求 虚拟机编译环境硬件要求:
- ROM 至少 250G。
- 内存至少 16G。
内存小于 16G 时编译大概率会出现以下错误提示。 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space。
操作系统要求
建议选择 14.04 版本的 64 位 Ubuntu 系统,查看 Ubuntu 具体版本号的命令如下: lsb_release –a
额外需要的主要软件包(默认都支持):
- Python V2.6 或 V2.7
- GNU Make V3.81 或 V3.82
- Git V1.7 或更新的版本
- glibc V2.17 或更新的版本
- SSE V4.2
工具包安装
选择 Ubuntu 14.04 系统后,使用以下命令安装编译环境依赖的工具包。
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \ libgl1-mesa-dev libxml2-utils xsltproc unzip libssl-dev
其实这些东西都已经配置好了,我的问题是在编译到 vmlinux 时出的异常,网上也没找到原因,最后在编译时打印了内存使用发现是内存不够用了,
/home/lichang/workspace/android/nv8-v3/bsp/kernel/kernel5.4/scripts/link-vmlinux.sh: line 71: 5726 Killed ${LD} ${KBUILD_LDFLAGS} -r -o ${1} $(lto_lds) ${objects}
make[1]: *** [vmlinux] Error 137
make[1]: Leaving directory `/home/lichang/workspace/android/nv8-v3/bsp/out/androids/uis8581e_5h10_Natv/obj/kernel' make: *** [sub-make] Error 2
make: Leaving directory `/home/lichang/workspace/android/nv8-v3/bsp/kernel/kernel5.4' it takes 11 minutes to make kernel
make: Entering directory `/home/lichang/workspace/android/nv8-v3/bsp/out/androids/uis8581e_5h10_Natv/obj/kernel' arch/arm64/Makefile:52: Detected assembler with broken .inst; disassembly will be unreliable
cp: cannot stat './modules.builtin.modinfo': No such file or directory
make[1]: *** [_modinst_] Error 1
make: *** [sub-make] Error 2
/home/lichang/workspace/android/nv8-v3/bsp/kernel/kernel5.4/scripts/link-vmlinux.sh: line 71: 5726 Killed ${LD} ${KBUILD_LDFLAGS} -r -o ${1} $(lto_lds) ${objects}
- 这个错误表明在尝试链接 vmlinux(未压缩的 Linux 内核)映像时,进程被终止(收到信号 9)。这可能是由于内存不足或系统资源问题,或者与链接器或链接器标志有关的问题。
解决办法是直接添加交换空间,因为本身运行内存就是16GB的,以防万一增加了8G。
1. 查看信息
sudo swapon --show
2.创建交换文件
sudo fallocate -l 8G /swap.img
sudo chmod 600 /swap.img
3.启用交换文件
sudo mkswap /swap.img
sudo swapon /swap.img
4.验证
sudo swapon --show
free -h