aiQG's Blog

Happy hacking. Happy developing.

aiQG's GitHub ⛓Links P
Other CTF Swift Developing&Reversing

How_to_compile_android_kernel_on_osx

26 September 2020

by aiQG_

(在OSX上用clang编译arm64的安卓内核)

First of All: 一个区分大小写的文件系统

(OSX文件系统不区分大小写, 导致下载/解压时不同文件的覆盖(文件缺少))

打开磁盘工具, 创建一个区分大小写的APFS宗卷, 所有工作都在这个宗卷里进行.

通过 repo 下载源码

下载方式(Google官方提供)

执行 build/build.sh 构建内核 官方链接

编译好的东西在 ./out/

配置环境

  1. 下载交叉编译器 下载 clang, 不再支持gcc.

    $ pwd 
    /Path/To/prebuilts-master/clang/host
    $ git clone https://android.googlesource.com/platform/prebuilts/clang/host/darwin-x86
    
  2. ./build/_setup_env.sh 替换 readlinkgreadlink. export ROOT_DIR=$PWD 改为 export ROOT_DIR=$(greadlink -f $PWD)

  3. ./build/build.sh 替换 readlinkgreadlink. (可能需要brew install coreutils) 替换 targtar.

  4. ./private/msm-google/build.config.common 替换 linux-x86darwin-x86. (同时确认所指向的几个路径正确)

  5. private/msm-google-modules/wlan/qcacld-3.0/Makefile ``readlink 替换为 greadlink`.

  6. ./private/msm-google/Makefile
    • HOSTCFLAGS 变量增加一个路径: HOSTCFLAGS := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
    • brew install libelf. 然后给 HOSTCFLAGS 变量增加一个路径: HOSTCFLAGS := -I/usr/local/include (解决'elf.h' file not found)
    • sed -e 改为 gsed -e
  7. ./private/msm-google/arch/arm64/kernel/vdso/gen_vdso_offsets.sh's/^\([0-9a-fA-F]*\) . VDSO_\([a-zA-Z0-9_]*\)$/\#define vdso_offset_\2\t0x\1/p' 改为 's/^\([0-9a-fA-F]*\) . VDSO_\([a-zA-Z0-9_]*\)$/\#define vdso_offset_\2 0x\1/p' (将 \t 改成空格或制表符) (解决 use of undeclared identifier ‘vdso_offset_sigtramp')

  8. ./private/msm-google/scripts/Makefile.modpost 去掉 xargs 后面的 -r

  9. ./private/msm-google/scripts/link-vmlinux.shstat 改为 gstat

  10. ./private/msm-google/scripts/headers_install.shsed -r 改为 gsed -r

其他错误

  1. 'asm/types.h' file not found mac-linux-headers 按照README增加头文件

  2. 缺少dtc/extract_dtb/lz4c/mkdtimg/ufdt_apply_overlay

    整理了一些: AOSP_KernelCompileTools

    确认以下文件存在

  1. Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler (这个报错在我进行了和如下操作(解决 'elf.h' file not found 的操作)后就消失了, 没能成功复现) brew install libelf./private/msm-google/Makefile 中的 HOSTCFLAGS 变量增加一个路径: HOSTCFLAGS := -I/usr/local/include
Developing&Reversing

return

email:nrxxmzlrovqw4z3fgeztcncaozuxaltroexgg33n

桂ICP备18011144号-1 (点击访问安全的工信部网站)