Build hiddenapi上SIGILL的AOSP9.0生成失败

Build hiddenapi上SIGILL的AOSP9.0生成失败,build,android-source,Build,Android Source,环境是: VMWare工作站12上的Win7 x 64主机+Ubuntu14.04 x64虚拟机 来源是AOSP 9.0.0_r30 生成错误为: xargs: /OpenSource/Build/Android-9.0.0_r30/src-9.0.0_r30/host/linux-x86/bin/hiddenapi: 由信号4终止 正确答案如下: 原因是我的构建主机CPU(Q6600)不支持SSE4指令 项目艺术要求SSE4,因为在 art\build\Android.bp 有以下CFLA

环境是:

VMWare工作站12上的Win7 x 64主机+Ubuntu14.04 x64虚拟机

来源是AOSP 9.0.0_r30

生成错误为:

xargs:

/OpenSource/Build/Android-9.0.0_r30/src-9.0.0_r30/host/linux-x86/bin/hiddenapi:

由信号4终止

正确答案如下:

原因是我的构建主机CPU(Q6600)不支持SSE4指令

项目艺术要求SSE4,因为在

art\build\Android.bp
有以下CFLAG:

        "-msse4.2",
        "-mpopcnt",
以及子项目

art\tools\hiddenapi
继承这些cflag,因此输出主机可执行文件“hiddenapi”将包含SSE4指令,并在构建期间触发SIGILL

根据本页末尾:,您可以通过以下方式进行验证:

objdump -d /OpenSource/Build/Android-9.0.0_r30/src-9.0.0_r30/host/linux-x86/bin/hiddenapi> ~/hiddenapi.asm
注意:我的OUT_DIR_COMMON_BASE设置为

/OpenSource/Build/Android-9.0.0_r30/
然后

gawk'/\/'~/hiddenapi.asm
然后您将看到它包含一条SSE4指令


删除上述cflags后,源代码将成功构建。但现在还不知道这是否会产生任何bug,尽管cflags似乎只影响主机可执行文件,可能性很低。

您可以手动进行此提交中概述的更改,以添加此检查的旁路:在VirtualBox+Ubuntu 18.04中构建时面临相同的问题。这个解决方案对我有效。
gawk '/\<(mpsadbw|phminposuw|pmulld|pmuldq|dpps|dppd|blendps|blendpd|blendvps|blendvpd|pblendvb|pblenddw|pminsb|pmaxsb|pminuw|pmaxuw|pminud|pmaxud|pminsd|pmaxsd|roundps|roundss|roundpd|roundsd|insertps|pinsrb|pinsrd|pinsrq|extractps|pextrb|pextrd|pextrw|pextrq|pmovsxbw|pmovzxbw|pmovsxbd|pmovzxbd|pmovsxbq|pmovzxbq|pmovsxwd|pmovzxwd|pmovsxwq|pmovzxwq|pmovsxdq|pmovzxdq|ptest|pcmpeqq|pcmpgtq|packusdw|pcmpestri|pcmpestrm|pcmpistri|pcmpistrm|crc32|popcnt|movntdqa|extrq|insertq|movntsd|movntss|lzcnt)\>/' ~/hiddenapi.asm