“Linux开发环境搭建/编译/打包”的版本间的差异
(→编译内核) |
(→编译内核) |
||
第23行: | 第23行: | ||
==编译内核== | ==编译内核== | ||
+ | 直接执行下列命令: | ||
+ | |||
$ ./build.sh | $ ./build.sh | ||
2021年12月25日 (六) 11:01的版本
目录
编译环境搭建
安装Ubuntu操作系统
- 同Android部分
安装所需组件
- 同Android部分
编译步骤
解压源代码
mkdir HDA64_Linux
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/
源码结构
SPL(底层引导代码):lichee/brandy
U-Boot:lichee/brandy/uboot-xxxx.xx
Linux内核:lichee/linux-3.x
系统配置(env.txt和fex文件等):lichee/tools/pack/chips/sunxiwxpx/config
编译U-Boot
默认无需编译。若要修改U-Boot,编译方法同Android部分。
编译内核
直接执行下列命令:
$ ./build.sh
编译Android并打包
在android目录下依次执行以下命令:
$ source build/envsetup.sh
$ lunch
会显示若干选项,输入对应的数字按回车选择对应的选项,最终完成配置。
对于A33(Android 4.4):选 vstar-eng
对于A64(Android 6.0):选 tulip_p2-eng
对于A40i(Android 7.1):选 a40_p1-eng
对于A133(Android 10):选 ceres_c3-eng
$ extract-bsp
$ make -j8
CPU有几线程-j后面的数字就是几。例如使用i5 8250U,是4核8线程的处理器,则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时,视电脑配置不同而定。
$ pack
对于A33/A64/A40i:打包好的固件位于lichee/tools/pack下面。
对于A133:打包好的固件位于longan/out下面。
常见问题
A:Android 6.0部分make时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误
Q:问题的原因在于AOSP中的预编译好的ld程序存在bug,我们使用Ubuntu系统默认的ld来替换它。具体步骤如下:
将aosp中的ld改名:
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin
$ mv ld ld.old
使用soft link,链接到全局ld:
$ ln -s /usr/bin/ld.gold ld