• 订阅

    抓虾
    google reader
    bloglines
    鲜果
  • 分类目录

  • 功能

  • 标签

    不折腾 价值 健身 回忆 小说 幼稚的思想 影评 感想 推倒 朝花夕拾 犯罪 理想生活 生活 电影评论 看小说 看电影 看病 社会 社会事件 笔记本 网络 言论自由 过年 随想 黑客 黑客小说 AV女优 blog BotCalk cult festival Fvwm GMChess gmitter GMLive gtkmm iCalk iTalk M8 ppstream program soft talkmm twitter vim
  • « | Main | »

    再次配置gtkmm交叉编译环境

    By lerosua | 三月 29, 2009

    Gtkmm有跨平台的特性。我决定发扬此特性,那先从port gtkmm到win
    平台开始吧。那第一步就是配置gtkmm的win编译环境。网上大多文章都
    介绍了在win下配置gtkmm的环境。而我之前也写过一篇介绍在linux下通
    过mingw32来编译gtkmm程序的文章。
    Gtkmm系列:交叉编译Window版本的Gtkmm程序示例

    是的,我觉得这样才有意思,交叉编译嘛。

    但是那一篇是参考别人的译作,方法有些繁琐,重要的是,已经不太适合
    当前的环境了。主要是那个文章只支持到gtk28版本,目前的gtkmm已经
    到2.16了。mingw32也是4.3的版本,众所周知,4.3版本的gcc语法严谨
    多了。
    经过昨天一晚上及今早的奋斗,和yetist双线合作,一人一种方法找环境配
    置方法。目前完成了第一阶段的成功。

    事实上,arch社区里是有gtk2的mingw32包,也就是说gtk+的交叉编译
    环境是有人做好的了。只需要用yaourt就能安装配置完成。但gtkmm却
    没有,yetist就循着这条线索,准备编译gtkmm的win32包。

    而我在看了那些在win下配置gtkmm环境的文章后,想到,其实也只是下
    载需要的库而已啊,而那些库,是组成gtkmm的基础,既然我现在是要编
    译pe格式的程序,最终调用的不也是那些库嘛,那把win下的gtkmm开发
    包转到linux下来给mingw32调用不就成了。于是照做,编译成功了又一个
    gtkmm demo程序。

    废话了这么多,那就正式开始交叉编译gtkmm之路吧。
    很简单:

    1.先下载gtkmm开发包

    当然是for win的。http://ftp.acc.umu.se/pub/GNOME/binaries/win32/gtkmm/2.16/gtkmm-win32-devel-2.16.0-2.exe
    2.16的开发包好啊,gtk+啥的都包含了。
    但需要在win下安装解压出来,虽然是42M的大小,解出来有380M大。
    安装完后从win分区里安装的gtkmm目录完整复制到linux分区中。我这里
    放在/src/mingw32-gtkmm,你可以随便定义这个目录。只记住需要做个
    链接即可,

    sudo ln -s /src/mingw32-gtkmm /target

    2.修正prefix路径

    这是for win的开发包,所以还是需要修改一些东西的,主要是pkgconfig
    的路径问题。
    执行下面两个命令即可修正:

    find /target/lib/pkgconfig  -name "*.pc" |xargs sed -i 's#prefix=c:\/devel\/target.*#prefix=\/target#'
    find /target/lib/pkgconfig  -name "*.pc" |xargs sed -i 's#prefix=\/gtkmm_debug#prefix=\/target#'

    3.安装mingw32

    这步是安装编译器,pacman 也行,yaourt 也行.

    sudo pacman -S mingw32

    装好后执行下面命令可见:

    i486-mingw32-g++ -v
    Using built-in specs.
    Target: i486-mingw32
    Configured with: /home/sergej/community.cvs/devel/mingw32-gcc/src/gcc-4.3.0-20080502-mingw32-alpha-src/gcc-4.3.0/configure --target=i486-mingw32 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --prefix=/usr --enable-languages=c,c++ --enable-sjlj-exceptions --enable-hash-synchronization --disable-nls --disable-libssp --disable-shared
    Thread model: win32
    gcc version 4.3.0 (GCC)

    4.搞定

    那么是搞定了吗?基本是完成了。
    还是经典的测试代码:

    #include <gtkmm/main.h>
    #include <gtkmm/window.h>
    int main(int argc, char **argv)
    {
            Gtk::Main main_obj(argc, argv);
     
            Gtk::Window win;
     
            main_obj.run(win);
            return 0;
    }

    编译命令:

    i486-mingw32-g++ test.cpp -o test.exe `PKG_CONFIG_PATH=/target/lib/pkgconfig  pkg-config gtkmm-2.4 --cflags --libs`

    生成了的test.exe放到win下跑吧。win的环境需要有gtkmm支持,把一开
    始下载的开发包装上就有了。

    目前来说,工作正常,下一步可以把精力放在跨平台代码上了.
    看图:

    发件人 lerosua' blog

    Topics: gtkmm | 2 Comments »

    2 Responses to “再次配置gtkmm交叉编译环境”

    1. 找不着北 Says:
      四月 9th, 2009 at 4:51 下午

      你好,想问你下的日志里的代码高亮用的是哪个插件?

    2. lerosua Says:
      四月 10th, 2009 at 9:10 上午

      是 wp-syntax

    Comments