ubuntu 18.04 编译android 8.1 问题记录

本文介绍了解决Ubuntu 18.04下编译Android应用时出现的错误提示的方法。通过设置环境变量LC_ALL=C,可以解决因本地化设置导致的编译失败问题。

新安装的ubuntu 18.04 简单配置一下android编译环境后,编译app 出现下面的错误提示:

flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertioncnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)

bing 搜索之,在这个链接中找到解法
https://stackoverflow.com/questions/49955137/error-when-build-lineageos-make-ninja-wrapper-error-1

export LC_ALL=C

把这行代码添加到bashrc 文件中。

实测有效。


那么这句配置是什么意思呢?
搜索得到:
LC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。

<think> 根据用户提供的引用和问题描述,该错误在多个编译场景中出现(如交叉编译器验证、Android编译等),且解决方法都指向设置环境变量`LC_ALL=C`。用户当前在Ubuntu 18.04编译Android 8.1时,flex工具报出断言失败错误,具体为: `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` 综合引用[1][3][4]的解决方案,根本原因是本地化环境设置问题,导致flex在解析时出现错误。解决方法是在编译环境中设置`LC_ALL=C`,以使用默认的C语言环境,避免本地化带来的问题。 具体操作步骤: 1. 临时设置(当前终端有效): 在终端中执行: ```bash export LC_ALL=C ``` 然后重新运行编译命令。 2. 永久设置(推荐): 将上述命令添加到编译环境初始化脚本中(如build/envsetup.sh),这样每次编译都会自动设置。例如,在`envsetup.sh`文件的末尾添加: ```bash export LC_ALL=C ``` 然后执行`source build/envsetup.sh`使其生效。 3. 如果问题仍然存在,可以尝试在运行flex命令前直接设置,例如: ```bash LC_ALL=C prebuilts/misc/linux-x86/flex/flex-2.5.39 ...(原flex命令) ``` 注意:此方法在引用[1][3][4]中均被验证有效,且不限于Android编译,同样适用于其他类似错误(如交叉编译器验证失败)。 如果用户的环境初始化脚本中已经存在其他设置LC_ALL或LANG的环境变量,可能需要调整顺序或覆盖设置。建议先使用临时设置验证问题是否解决,再决定是否永久修改。 </think>### 解决Ubuntu 18.04编译Android 8.1时flex断言失败错误错误是由于系统区域设置与flex工具不兼容导致的,可通过以下步骤解决: #### 解决方案 1. **临时设置环境变量(推荐)** 在编译命令前添加: ```bash export LC_ALL=C ``` 例如: ```bash export LC_ALL=C && make -j8 ``` 2. **永久生效设置** 在编译环境初始化脚本中添加: ```bash # 编辑build/envsetup.sh echo "export LC_ALL=C" >> build/envsetup.sh source build/envsetup.sh ``` 这将确保每次初始化编译环境时自动设置[^1][^3][^4] 3. **验证设置** ```bash # 检查当前区域设置 locale # 正确输出应包含LC_ALL="C" ``` #### 原理说明 当`LC_ALL`设置为UTF-8等本地化环境时,flex-2.5.39在解析词法规则文件(`.ll`)时会触发区域数据加载断言失败。强制使用`C`区域设置(即POSIX标准)可绕过此兼容性问题[^2][^4]。 #### 注意事项 1. 该设置仅影响编译环境,不会改变系统其他设置 2. 如使用其他编译工具链(如arm-himix200-linux),同样适用此方案[^2][^4] 3.问题持续,尝试更新flex至2.6.0+版本
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值