Ubuntu 22.04 AOSP 编译报 flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? ‘cnt < (sizeof

今天公司两台电脑刷了Ubuntu的22.04的系统,想着22出了这么长时间了,应该没啥问题,但是在下载了公司项目编译AOSP的时候报下面的错误:


ninja: no work todo.

No need to regenerate ninja file

No need to regenerate ninja file

[0%1/4440]//system/tools/aidl:libaidl-common lex aidl_language_l.ll [linux_glibc]

FAILED: out/soong/.intermediates/system/tools/aidl/libaidl-common/linux_glibc_x86_64_static/gen/lex/system/tools/aidl/aidl_language_l.cpp

prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/soong/.intermediates/system/tools/aidl/libaidl-common/linux_glibc_x86_64_static/gen/lex/system/tools/aidl/aidl_language_l.cpp system/tools/aidl/aidl_language_l.ll

flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ??'cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' ???

Aborted (core dumped)

[0%8/4440]//external/libcxxabi:libc++abi clang++ src/stdlib_new_delete.cpp [linux_glibc]

ninja: build stopped: subcommand failed.

18:04:05 ninja failed with: exit status 1

你Google可能给你的答案是在.bashrc中添加 LC_ALL=C,然后执行

$ source ~/.bashrc

不过我这是无效的,原因待查(猜测可能是因为AOSP中的flex可执行文件在Ubuntu22上运行不兼容)

你还可能Google到让在build/envsetup.sh 最后加上 LC_ALL=C再进行make编译,不过在我这也是无效的

最终的解决方式是重新编译下AOSP/prebuilts/misc/linux-x86下的flex库

具体命令是:


you:AOSP/prebuilts/misc/linux-x86/flex$ ll  //你可能会看到:flex-2.5.39(可执行文件)、flex-2.5.39.tar.gz(flex压缩包)
you:AOSP/prebuilts/misc/linux-x86/flex$ mkdir flex-2.5.39.source
you:AOSP/prebuilts/misc/linux-x86/flex$ tar -zxvf flex-2.5.39.tar.gz -C flex-2.5.39.source/
you:AOSP/prebuilts/misc/linux-x86/flex$ cd flex-2.5.39.source
you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source$ mkdir install

you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source$ cd flex-2.5.39

安装到刚才创建的install目录,绝对地址:
you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source/flex-2.5.39$ ./configure --prefix=/home/you/xxxxxxxxxxxxxxxxxx/AOSP/prebuilts/misc/linux-x86/flex/flex-2.5.39.source/install/

you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source/flex-2.5.39$ make
you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source/flex-2.5.39$ make install
you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source/flex-2.5.39$ cd ../install
you:AOSP/prebuilts/misc/linux-x86/flex-2.5.39.source/flex-2.5.39/install$ ls

将bin下flex 可执行文件替换掉AOSP/prebuilts/misc/linux-x86/flex下的flex-2.5.39可执行文件重新编译即可。

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值