android 7.1.2 + ARMv7

24

我在更新了Debian之后编译Android 7.1.2源代码时遇到了这个问题。我不知道真正的问题是什么。 似乎是flex的问题。但是,我该如何解决?

FAILED: /bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_l.cpp system/tools/aidl/aidl_language_l.ll" flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed . Aborted


1
你的shell中LC_TIME的值是多少?(使用locale | grep TIME命令可以查看。)如果你先执行export LC_ALL=C,它是否有效? - rici
顺便说一下,这不是一个 flex 问题。这可能是在调用 setlocale 时 glibc 遇到的问题。 - rici
1
@penf:很棒,你让它工作了,但是区域设置问题是一个发行版的错误,假设区域设置是你的发行版的一部分,应该报告该问题(当然,除非已经报告过)。 - rici
同我的Ubuntu 22一样 - linjiejun
4个回答

54

我在Ubuntu 18.04上也遇到了同样的问题。LC_TIME被设置为en_GB.UTF-8。

export LC_ALL=C

修好了我的问题


1
我之前也遇到了同样的错误,在执行“export LC_ALL=C”命令后问题得以解决。如何将这个变量集成到Android源代码中,以便在编译之前就能避免运行该命令呢? - vijay panwar

4

我在新安装的18.04上构建了从Google下载的AOSP(Android O/P),构建成功。没有必要更改语言环境。

然后我需要在同一台机器上构建Android N和IMX发行版,但构建失败并出现了上述错误。更改语言环境变量后,构建成功。


我在Ubuntu22和Android7源代码中遇到了相同的问题。 - linjiejun

3

最近我在使用Ubuntu 22.04编译AOSP时遇到了这个问题。设置locale根本没有起作用。

然而,我在GitHub thread上发现了一个建议,即重新构建flex。

cd prebuilts/misc/linux-x86/flex
rm flex-2.5.39
tar zxf flex-2.5.39.tar.gz
cd flex-2.5.39
./configure
make
mv flex ../
cd ../
rm -rf flex-2.5.39
mv flex flex-2.5.39

这对我解决了错误。


非常感谢@Flo。这也解决了我在Ubuntu22.04主机和Ubuntu22.04 Docker容器上构建AOSP的问题。我只是不明白为什么预构建的prebuilts/misc/linux-x86/flex中捆绑的flex会导致这个问题... - Sertac TULLUK

1
我之前也遇到了同样的错误,在进行编译之前在终端中运行了"export LC_ALL=C",问题已经解决。 如何将这个变量集成到Android源代码中,以便在编译之前就可以避免运行它。

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