China Open source community
站内导航:
站内排行前50热点文章

精华文章  GDB调试精粹及使用实例
普通文章  STL中map用法详解
精华文章  负载均衡软件比较(Hapr...
普通文章  头文件的重复引用
普通文章  递归函数的调用过程
普通文章  TCP三次握手/四次挥手详解
普通文章  epoll的实现原理
普通文章  贪心策略的理论基础——...
普通文章  BMH算法原理与实现(模...
普通文章  http请求的详细过程
普通文章  排列组合与回溯算法
普通文章  GNU LD用法
普通文章  DP动态规划
普通文章  Linux socket编程之套接字
普通文章  Linux内核中的红黑树
精华文章  linux下使用minicom的几...
精华文章  Android线程模型
普通文章  Java开源Html解析类库
精华文章  enum类型的本质
普通文章  memcached server LRU ...
普通文章  android核心模块及相关...
普通文章  linux设置环境变量的方法
普通文章  linux源代码包(.tar.g...
普通文章  L.A.M.P配置过程
普通文章  gcc编译过程概述
普通文章  在ubuntu9.10下安装QT4...
普通文章  应用程序二进制接口---ABI
普通文章  python的memcache和jso...
普通文章  Java多线程实现简单实例
普通文章  C/C++程序员常见面试题...
普通文章  linux内核编译问题
普通文章  Python程序员常用的IDE...
普通文章  优化C语言代码(程序员必...
普通文章  brk和sbrk详述
普通文章  Unix操作系统的历史演变
普通文章  发行版发布:CentOS 5.4
普通文章  模版函数指针,C++委托...
普通文章  在windows中构建gtk开发...
普通文章  关于Qvariant类--万能的...
普通文章  Debian sudo 设置
普通文章  busybox1.15.x 交叉编译
普通文章  i++循环与i--循环的执行...
普通文章  python非贪婪,多行匹配...
普通文章  cscope使用简介
普通文章  关于僵死进程zombie
普通文章  函数指针传递和全局指针...
普通文章  递归思想的妙用
普通文章  Android Porting Exper...
普通文章  判断链表是否存在环并找...
普通文章  [翻译]Django初窥

 
 
 
当前位置: 首页 >> 开源操作系统 >> 在Windows和MinGW上编译Skyeye
 
 

在Windows和MinGW上编译Skyeye

作者:koodailar      来源:linuxfans.org     发表时间:2006-04-12     浏览次数:      字号:    

在chenyu老师的指导下,经过一些努力, skyeye现在终于可以在windows上直接编译运行了。 之前在cygwin上的版本由于cygwin固有的原因, 速度始终有所局限。现在采用方法的是在mingw上编译成直接可以在windows上运行的程序。速度据目测确实相对于cygwin有很大提升。其代码已经上载进cvs中,大家可以下载后自己测试一把。以下将简单介绍一下如何使skyeye在mingw和Dev-cpp环境中的配置,编译,及执行。这个论坛好像发文不能贴图片。中间有些截屏可能会对大家有些帮助。等找到放图片的办法了再说吧。

1。环境的搭建
为了使skyeye能够在windows上编译,以下的包是必须的:
GTK-Development-Environment, mingw-install-20050907.tar.gz,SDL,devcpp
为了使skyeye能够在windows上运行,以下包使必须的:
GTK-Runtime-Environment,openvpn,SDL
为了打包skyeye的gui界面,以下包使必须的:
py2exe-0.6.3.win32-py2.4.exe

以下简单介绍以下各个包。
基本上所有包在sf上都能找到,比较稀奇古怪的东西都有全名,其余的大家可以去找最新的版本。GTK主要使为了支持touchscreen,SDL作为其替代也顺便放了进去。 openvpn的安装包中有tap-win32,这个是在windows上虚拟网卡必须的。py2exe是把python程序打包用的,for windows的版本在开发过程中顺便用python写了个gui,方便跨平台。

1。1 mingw安装。
1。1。1 mingw
mingw-install-20050907.tar.gz解压之后有个提示,大家照做即可。
1。1。2 dev-cpp
dev-cpp是mingw的集成开发环境。安装什么的大家点next即可,没有特别需要注意的。

1。2 gtk安装
gtk有两个需要安装的:GTK-Development-Environment和GTK-Runtime-Environment。前者是开发环境,后者为运行环境。前者安装时最好安装在mingw的根目录下(dev-cpp也是一样)。
DANGEROUS: gtk头文件定义似乎有问题。安装好后修改include/glib-2.0/glib/gwin32.h, 注释掉第72和73行

1。3 sdl安装
还是从源代码安装吧。SDL默认关闭了stdout和stderr。修改SDL-1.2.9srcmainmacosSDL_main.c注释掉cleanup_output函数中 *fclose(stdout)即可。然后在mingw环境下
./configure --prefix=/mingw/
make
make install

1。4 openvpn安装
安装tap-win32即可。tap-win32的配置在pearpc的安装教程中有所介绍。不过那个介绍实在是太糟糕了,没看懂。

安装完后,控制面板。网络连接中会出现一个新网卡,写着“...网络电缆被拔出...”,这个就是tap-win32
添加的新网卡。被拔出的原因是因为还没有连接上。

先修改一下原来网卡的配置。原来网卡->属性->高级中有internet连接共享, 把那个
“允许...通过..”打勾,如果有“...控制或禁用...”的话也打勾吧。后面那个选项在
windows2003 server中默认是不出现的。在internet连接共享上面有个防火墙什么的,也顺带都关闭了。

在原来的网卡配置完后会出现一个提示窗口,说“...192.168.0.1...",不管它,确定就好。
然后看看tap-win32新增加那块网卡的属性。 这时候ip被设置成192。168.0.1,子网掩码255.255.255.0,不用改了。



2。编译运行
和在linux下的一样,不过要先改改Makefile.win
之所以要改Makefile.win,是因为`pkg-config gtk+-2.0 --cflags --libs`直接在mingw下编译是没有问题的,但在devcpp下编译会出现问题。在不是很清楚的情况下只好大家自己改Makefile了。要改的有两个地方,一个是SIM_EXTRA_LIBS,另一个是binary/skyeye_lcd_gtk.o。一个在最开头,另一个在最结尾,都很好找。
改好以后make -f Makefile.win即可。


3。note
在这里主要介绍的是在port到windows中的教训,路过的人可以不看。呵呵

基本上装好mingw后不支持的函数就剩下select和mmap两个。由于是第一次接触windows编程,select实在是想不出替代的办法。幸好所有select
只是判断一个fd是否可读而已,因此就用了sdl中的线程库,一个read,一个get。这样做有一个非常非常诡异的现象,在我宿舍的机器上面
一点问题都没有,但是挪到实验室后发现没有输入和输出。在随后的调试过程中发现sem-post之后一个printf可以解决问题。为了不
出现不雅的记号,最终采用办法是printf(" b"),这样是看不出来有任何问题,只是效率有所牺牲。mmap的问题更加简单,纯粹就是分配
一块大内存。我问了一下,当初选择mmap好像是为了防止内存分配过大,或者分配太慢而采用的。目前测试版本中直接malloc似乎一点问题
没有。

网卡的支持是这次改版的主要目的自已。为了能支持网卡,参考了qemu和pearpc相关部分的实现。后来采用了pearpc的代码,qemu的代码其实和
pearpc基本毫无差别(我怀疑当中有一个抄另一个,呵呵),但是qemu的代码会出现诡异的问题,所以后来放弃了。

仔细的人会发现这次cvs update中几乎所有文件都修改了。主要变化是这个:
#include "armdefs.h" -> #incldue "arch/arm/common/armdefs.h"
如果不改devcpp在编译dbct的时候会出错。

编辑 webmaster

 
 
 
评论
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - www.YuanMa.org - 中国 开放源代码+编程 社区