在hiddenapi上,SIGILL的AOSP9.0构建失败

问题描述 投票:0回答:1

环境是:

VMWare Workstation 12上的Win7 x 64主机+ Ubuntu14.04 x64 VM

来源是AOSP 9.0.0_r30

构建错误是:

xargs的:

/open source/build/Android-9.0.0_日30/双人床-9.0.0_日30/host/Linux-小86/斌/hidden API:

由信号4终止

build android-source
1个回答
1
投票

正确答案在这里:https://github.com/sonyxperiadev/bug_tracker/issues/207

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

项目艺术需要SSE4,因为在

art\build\Android.bp

有这些cflags:

        "-msse4.2",
        "-mpopcnt",

和子项目

art\tools\hiddenapi

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

根据本页末尾:https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4-or-avx-on-linux,您可以通过以下方式验证:

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 '/\<(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

然后你会看到它包含一条SSE4指令......

删除上面的cflags之后,源代码将成功构建。但是这是否会产生任何错误现在都是未知的,但由于cflags似乎只影响主机可执行文件,因此机会很低。

© www.soinside.com 2019 - 2024. All rights reserved.