Mac非法指令:4

3
我正在从doc在MAC上构建AOSP(Android开源项目),虽然有一些问题,但我可以通过谷歌解决。当我执行make时,遇到了错误:

Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y

prebuilts/misc/darwin-x86/bison/bison -d -o out/host/darwin-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y

make: *** [out/host/darwin-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Illegal instruction: 4

我已经谷歌过很多次,并尝试安装bison,但对我没有用。 环境:
Mac SDK : 10.11
Mac OS  : 10.13
Android : 6.0.1
JDK     : 1.7
XCode   : 8.3
make    : 3.81

能否有人帮我?先谢了。

更新

我也尝试将 XCode 降级到7.3.1,但仍未起作用。

兼容性更新

file prebuilts/misc/darwin-x86/bison/bison
输出:prebuilts/misc/darwin-x86/bison/bison:Mach-O可执行文件i386

uname -a
输出:root:xnu-4570.1.46〜2/RELEASE_X86_64 x86_64


显然,有些东西说“4”是非法指令。你看过aidl_language_y.cpp文件吗?它看起来像是由bison生成的C++解析器吗?如果你将此文件移出构建树并尝试再次进行“make”,会发生什么? - Renaud Pacalet
不要删除文件(你永远不知道会发生什么)。只需将其移动到其他位置,然后再尝试制作。如果需要,您可以将其移到原来的位置。 - Renaud Pacalet
好的,如果您尝试执行 prebuilts/misc/darwin-x86/bison/bison --version 会发生什么? - Renaud Pacalet
输出为 非法指令:4 - CoXier
让我们在聊天中继续这个讨论。链接:http://chat.stackoverflow.com/rooms/156530/discussion-between-lijianixn-and-renaud-pacalet。 - CoXier
显示剩余8条评论
2个回答

1
我有同样的问题。bison 可执行文件已经损坏,因此我使用 homebrew 安装了 bison:
brew install bison

然后

sudo find / -name bison

这给了我找到bison安装路径的线索:/usr/bin/bison。我从AOSP中删除了bison文件:

sudo rm /Volumes/android/prebuilts/misc/darwin-x86/bison/bison

(Volumes/android/是我的工作目录,也是aosp目录。) 然后我创建了一个符号链接到使用homebrew安装的bison:

sudo ln -s /usr/bin/bison /Volumes/android/prebuilts/misc/darwin-x86/bison/bison

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接