国际化

来源:互联网 发布:企查查采集数据工具 编辑:程序博客网 时间:2024/04/30 08:12

        linux国际化需要一个叫做gettext的库支持,然而它又需要glibc 或者 iconv库的支持,在嵌入式开发中这一切都是需要我们自己构建的。

但是很不巧提供给我们交叉编译工具链的厂商没有给我们提供glibc的charmaps(字符转换映射表) gconv(字符转换所需动态库)。

        起初尝试使用crosstool编译一套gcc版本、glibc版本都与厂商一样的库,但是把C库、busybox,等等一些我们自己有源代码的库放到了根文件系统中,然后使用这个文件系统构建文件系统image,烧到板子上,运行起来总是有些我们没有源代码的驱动跑的不正常。

        于是采用了另一种方法,首先使用crosstool编译了一套gcc版本、glibc版本都与厂商一样的库,它哪里面会有charmaps gconv文件夹,然后把这两个文件夹分别mount到板子的/usr/share/i18n/charmaps /usr/lib/gconv上,再次运行程序问题解决。

        对/usr/share/i18n/charmaps /usr/lib/gconv进行裁减,运行需要进行转码(UTF8->GB2312)的程序然后执行cat /proc/程序id/maps发现只有GBK.so在使用,于是质保留了/usr/share/i18n/charmaps/GBK.gz /usr/lib/gconv/GBK.so /usr/lib/gconv/gconv-modules 这三个文件再次运行程序,问题解决。