·ChinaUnix首页 ·论坛 ·博客 
Linux首页 | Linux新闻 | Linux论坛 | Linux文档 | Linux下载 | Linux博客 | Linux搜索 | 开源项目孵化平台 | 《开源时代》
新手入门 | 安装启动 | 管理员指南 | 开发手册 | 桌面应用 | 程序开发 | 数据库 | 网络技术| CentOS | Fedora | MySQL | Apache | Ubuntu | Gentoo| OSCON08
  Linux时代 >> 技术文档 >> 程序开发
 
输入法 porting
来源: ChinaUnix博客  日期: 2009.02.06 15:24 (共有条评论) 我要评论
 
#!/bin/sh
#编译环境: ubuntu 8.04 LTS / cross compile=arm-linux-3.4.2
#/xroot  /xroot/build
#编译过程中出现错误的常用解决方法
#出现错误: cannot run test program while cross compiling
#vi configure: 找到相应行,去掉下面的 exit所在行, 改成 exit 为 echo 即可
#vi configure : 找 LIBS="-l 行, 替换为 LIBS="-L${PREFIX}/lib -lxxx", xxx代表xroot/lib目录下所存在的库
#出现错误:类似X11/Xlib.h: No such file or directory, 而文件确实在 xroot/include或其子目录下存在的,修改其所在目录下的Makefile, 修改DEFAULT_INCLUDES中添加相应目录
#出现错误: PATH_MAX 未找到的, 在其源文件中或者直接在config.h添加
#include  
#include  
#include
#把configure文件中最后一个 ac_config_files= 的地方后加入
    #LDFLAGS+="-L${PREFIX}/lib -lfreetype -lxml2 等所要用到的库"
    #DEFAULT_INCLUDES+="-I${PREFIX}/include -I${PREFIX}/include/freetype2 -I${PREFIX}/include/libxml2 等要用到的路径"
#编译出现: undefined reference to `__init_array_end' 错误,
#    1。 编译成库的则修改对应的Makefile, 找 Wall 后加上 -shared
#    2。编译应用程序的去掉 -pie
#step 1: Cross环境设定
export XROOT=/xroot
export PREFIX=$XROOT
#export LD_LIBRARY_PATH=$PREFIX/lib
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
export HOST=arm-linux
export BUILD=i686-linux
export CC=arm-linux-gcc
export CXX=arm-linux-g++
export AR=arm-linux-ar
export RANLIB=arm-linux-ranlib
export NM=arm-linux-nm
export AS=arm-linux-as
export LD=arm-linux-ld
export STRIP=arm-linux-strip
export READELF=arm-linux-readelf
export STRINGS=arm-linux-strings
export SIZE=arm-linux-size
export ADDR2LINE=arm-linux-addr2line
#公用环境设置
    ATK_CFLAGS=`pkg-config --cflags atk`
    ATK_LIBS=`pkg-config --libs atk`
    CAIRO_CFLAGS=`pkg-config --cflags cairo`
    CAIRO_LIBS=`pkg-config --libs cairo`
    DBUS_CFLAGS=`pkg-config --cflags dbus-1`
    DBUS_LIBS=`pkg-config --libs dbus-1`
    EXO_CFLAGS=`pkg-config --cflags exo-0.3`
    EXO_LIBS=`pkg-config --libs exo`
    FONTCONFIG_CFLAGS=`pkg-config --cflags fontconfig`
    FONTCONFIG_LIBS=`pkg-config --libs fontconfig`
    FONTENC_CFLAGS=`pkg-config --cflags fontenc`
    FONTENC_LIBS=`pkg-config --libs fontenc`
    FREETYPE_CONFIG=${PREFIX}/bin/free-config
    FREETYPE_CFLAGS=`pkg-config --cflags freetype2`
    FREETYPE_LIBS=`pkg-config --libs freetype2`
    GDK_CFLAGS=`pkg-config --cflags gdk-2.0`
    GDK_LIBS=`pkg-config --libs gdk-2.0`
    GLIB_CFLAGS=`pkg-config --cflags glib-2.0`
    GLIB_LIBS=`pkg-config --libs glib-2.0`
    GMODULE_CFLAGS=`pkg-config --cflags gmodule-2.0`
    GMODULE_LIBS=`pkg-config --libs gmodule-2.0`
    GOBJECT_CFLAGS=`pkg-config --cflags gobject-2.0`
    GOBJECT_LIBS=`pkg-config --libs gobject-2.0`
    GTK_CFLAGS=`pkg-config --cflags gtk+-2.0`
    GTK_LIBS=`pkg-config --libs gtk+-2.0`
    GTK2_CFLAGS=`pkg-config --cflags gtk+-2.0`
    GTK2_LIBS=`pkg-config --libs gtk+-2.0`
    GLADE_CFLAGS=`pkg-config --cflags libglade-2.0`
    GLADE_LIBS=`pkg-config --libs libglade-2.0`
    PNG_CFLAGS=`pkg-config --cflags libpng`
    PNG_LIBS=`pkg-config --libs libpng`
    USB_CFLAGS=`pkg-config --cflags libusb`
    USB_LIBS=`pkg-config --libs libusb`
    XML_CFLAGS=`pkg-config --cflags libxml-2.0`
    XML_LIBS=`pkg-config --libs libxml-2.0`
    PANGO_CFLAGS=`pkg-config --cflags pango`
    PANGO_LIBS=`pkg-config --libs pango`
    X11_CFLAGS=`pkg-config --cflags x11`
    X11_LIBS=`pkg-config --libs x11`
    XAU_CFLAGS=`pkg-config --cflags xau`
    XAU_LIBS=`pkg-config --libs xau`
    XT_CFLAGS=`pkg-config --cflags xt`
    XT_LIBS=`pkg-config --libs xt`
    ICE_CFLAGS=`pkg-config --cflags ice`
    ICE_LIBS=`pkg-config --libs ice`
    ICE_CFLAGS=`pkg-config --cflags ice`
    ICE_LIBS=`pkg-config --libs ice`
    TSLIB_CFLAGS=`pkg-config --cflags tslib-1.0`
    TSLIB_LIBS=`pkg-config --libs tslib-1.0`
    X_CFLAGS=`pkg-config --cflags x11`
    X_LIBS=`pkg-config --libs x11`
    XFT_CFLAGS=`pkg-config --cflags xft`
    XFT_LIBS=`pkg-config --libs xft`
    INCROOT=$PREFIX/include
    USRLIBDIR=$PREFIX/lib
    LIBDIR=$PREFIX/lib
   
#start compile   
#scim (1.4.4-7) 智能通用输入法平台
#Smart Common Input Method (SCIM) 是一个输入法(IM)平台。在输入复杂的非拉丁语字符时需要使用输入法。SCIM 提供了一个通用的
#平台,供各种插件模块和独立的 IM 程序使用。另外它自己还带有一些模块和程序。它是高度模块化的,并且提供了一些抽象接口,使得
#各种功能的插件模块能够轻松地相互通讯。当前支持的模块类型有:配置、IM 引擎、前端、过滤器和设置图形界面
#
#SCIM 通过共享库链接和服务器/客户机模型让 IM 引擎和前端通讯。它支持 XIM 协议,并提供了 GTK+ IM 模块和 Qt IM 模块。
#
#包括:scim 的主程序(基于 GTK+)和其他的支援程序;简单的配置模块、X11 前端模块、rawcode
#IM 引擎模块、简体/繁体中文转换过滤模块,和相应的设置图形界面模块;GTK+ 面板和它的设置图形界面模块;以及一个基于 GTK+的设置工具。
#
#SCIM 都是一个被广泛接受的、具有丰富特性的输入法引擎.
#
可用的单独打包的输入法:scim-table-{additional,ja,
po,zh}、scim-pinyin、scim-uim、scim-m17n、scim-chewing、scim-anthy、
scim-canna、scim-prime 和 scim-skk。
#GTK 用户还可以找到 scim-gtk2-immodule 软件包,用于支持 GTK+ IM 模块。
#
#scim
#   
  • libscim8c2a       library for SCIM platform
    #    [M]im-switch        输入法切换框架
    #    [M]scim-gtk2-immodule     GTK+2 input method module with SCIM as backend
    #        scim-modules-socket  socket modules for SCIM platform
    #    [A]scim-tables-zh            Chinese input method data tables for SCIM platform
    #        scim-modules-table      generic tables IM engine module for SCIM platform
    #    [A]scim-pinyin                smart pinyin IM engine for SCIM platform
    #   
    #安装平台
    #scim_1.4.4.orig.tar.gz
        ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --with-gtk-im-module-dir=$PREFIX/lib/gtk-2.0/2.10.0/immodules
        #修改config.h:  注释 #define malloc rpl_malloc 加入 #undef rpl_malloc
        #utils/Makefile: 修改 LDFLAGS = -L/xroot/lib -lX11
        #libtool和各级Makefile: 找到 -lgcc 和 -lstdc++ , 去掉
       
    #scim-pinyin-0.5.0
        ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --enable-tools
            
    #scim-tables-0.5.6
        ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX
       
    #vi tables/zh/Makefile tables/ne/Makefile tables/am/Makefile
    tables/bn/Makefile tables/vi/Makefile tables/te/Makefile
    tables/th/Makefile tables/ar/Makefile tables/kn/Makefile
    tables/pa/Makefile tables/ta/Makefile tables/additional/Makefile
    tables/ko/Makefile tables/ml/Makefile tables/hi/Makefile
    tables/ja/Makefile tables/gu/Makefile tables/ru/Makefile
        #查找 -b -o , 找到的本行注释不执行: 这个动作是产生字体库,可由PC拷贝过来。
        #修改 tables/Makefile, 修改 SUBDIRS = zh
        make -j 2 all;
        #拷贝PC上的  /usr/share/scim/tables/[Array30.bin   Cantonese.bin  Erbi.bin      Quick.bin    Wu.bin
        #                    CangJie3.bin  CantonHK.bin   Erbi-QS.bin   Simplex.bin  ZhuYin-Big.bin
        #                    CangJie5.bin  CNS11643.bin   EZ-Big.bin    Stroke5.bin  ZhuYin.bin
        #                    CangJie.bin   Dayi3.bin      Jyutping.bin  Wubi.bin     Ziranma.bin]等文件拷贝到 tables 目录下
        cp /usr/share/scim/tables/*.bin tables/zh/
        make -j 2 install;
       
    #scim-bridge-agent and scim-bridge-client
    #[scim-bridge_0.4.14.orig.tar.gz]
       
    ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX
    --enable-agent --enable-gtk2-immodule  --enable-tests  --enable-debug
       
    #配置scim   
        export XMODIFIERS="@im=SCIM"
        export GTK_IM_MODULE=SCIM
        gtk-query-immodules-2.0 > /xroot/etc/gtk-2.0/gtk.immodules
        #scim -f socket -ns socket -c simple -d
        scim -f x11 -e pinyin -c socket -d
       
       
    #fcitx 3.4.3
        tar jxf data.tar.bz2
        ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --enable-xft   
        #去掉config.h中的rpl_malloc的定义
        #在src tools/Makefile 添加 LDFLAGS = -L/xroot/lib -lXau -lXdmcp -lxml2
        #去掉tools/Makefile中的生成 库的操作 cj.mb等 all 依赖的 5行
       
       
    #启动fcitx     
    export LC_CTYPE=zh_CN.UTF-8
    export XMODIFIERS="@im=fcitx"
    export XIM=fcitx
    export XIM_PROGRAM=fcitx
    export GTK_IM_MODULE=fcitx
    export LANG="zh_CN"
    fcitx
    或者新建文件 /etc/X11/Xsession.d/25xchinput-start
    在里面写入
    export XIM=fcitx
    export XIM_PROGRAM=fcitx
    export XMODIFIERS="@im=fcitx"
    export GTK_IM_MODULE=fcitx
    export LANG="zh_CN"
    fcitx &
    这样fcitx就能自动随X启动
       
       
       
       
       
        export DISPLAY=:0.0 320*240
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90973/showart_1815692.html
  •   发表评论 查看评论(共有条评论)
     
     


    最新资讯更多>> 
    · 谷歌劝说诺基亚采用Android操作..
    · Apache 基金会确认退出 JCP 执..
    · Chrome 10 新功能探秘:新增GP..
    · 金山宣布开源其安全软件
    · 女黑客在开源会议上抱受骚扰
    · 21款值得关注的Linux游戏
    · 马化腾:腾讯半年后彻底转型,..
    · [多图] Chrome OS 预发布版本多..
    · Lubuntu 11.04 默认应用抢先一览
    · Red Hat宣布收购云计算软件提供..
    论坛热点更多>> 
    · do_execve时候用户栈中参数的..
    · swapinfo -atm 问题
    · Linux 的优点简述
    · VM虚拟机上得Red Hat Linux上..
    · 我看成了上海男人喜欢女人毛..
    · 校车展览,看了你就知道
    · 在遇到他之前,唯一需要做的..
    · GRUB的疑问
    · 从来没有人真正付足书价——..
    · 云存储 vs 网盘
    文档更新更多>> 
    · orcale queue
    · 谁可以推荐几本经典的操作系统的..
    · 【北京】某物联网公司招云计算应..
    · 【北京】某物联网公司招云计算应..
    · 谁能推荐几本关于操作系统的书
    · 如何添加网络接口eth1
    · 葡萄牙语入门教材的选取与经验分享
    · 葡萄牙语就业前景分析
    · 葡萄牙语学习经验交流
    · Щ
     
    关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 友情链接 | 免费注册

    Copyright © 2001-2009 ChinaUnix.net All Rights Reserved

    感谢所有关心和支持过ChinaUnix的朋友们

    京ICP证:060528号