2019年7月22日月曜日

在 Ubuntu 18.04 make AOSP 8.1 遇到的錯誤

這陣子一直在搞 AOSP
但是 build AOSP 的時候好像很容易就出現錯誤了= =

TL;DR

$ export LC_ALL=C



遇到的錯誤訊息

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 (core dumped)
ninja: build stopped: subcommand failed.
ninja failed with: exit status 1




解決方法

$ export LC_ALL=C
locale 這個東西是用來設定執行的程式的不同語言環境用的
基本上包括了 Language、Territory、Codeset
locale 總共分成 12 類
所以有 12 個 define 值
LC_CTYPE
LC_NUMERIC
LC_COLLATE
LC_TIME
LC_MONETARY
LC_MESSAGES
LC_NAME
LC_ADDRESS
LC_TELEPHONE
LC_MEASUREMENT
LC_PAPER
LC_IDENTIFICATION
而 LC_ALL 的優先級別則高於上述的全部
所以設定 LC_ALL 的時候
就會完全不管上述的 locale sensitive 的設定
LC_ALL=C 的 “C” 指的是 POSIX
這意味著你的程式根本不管 locale 的設定
這樣就和多國語言的設計理念看起來有點衝突了的說= =

1 件のコメント:

  1. このコメントはブログの管理者によって削除されました。

    返信削除