在vs2008下使用cygwin(1):前言

来源:互联网 发布:通达信布林线boll源码 编辑:程序博客网 时间:2024/06/05 18:43

 

快乐虾

http://blog.csdn.net/lights_joy/

lights@hb165.com

  

 

本文适用于

Cygwin-1.16

Vs2008

  

欢迎转载,但请保留作者信息

 

Cygwin是一个在windows下编译运行linux应用程序的平台,它由两部分组成。一个是核心的cygwin1.dll,这个dllwindowsapi实现了Linux下的大部分API。另一个部分则是newlib,实际上就是glibc,它将调用cygwin1.dll中的实现,然后以glibc的形式呈现给用户使用。

这两部分的代码可以通过CVScygwin.com的服务器上获得。

Vs2008是一个不错的集成开发环境,如果能够将cygwinvs2008编译,并使之与vs2008下的c runtime library协同工作,那么其产生的效益将是非常大的。大到什么程度,自己想去吧,呵呵!由于cygwin编译出来的程序最终要在windows下运行,最终也只能使用windows提供了服务,这就为cygwinvs2008下的编译提供了可能。

因为cygwin最终提供的是glibcapi,而又希望它可以和vs2008libc混合使用,那么分析glibc的代码就是首要的任务。

glibc主要可以分为应用型的函数和平台依赖型的函数,前者如字符串处理函数,后者如io函数。

对于前一类的处理比较简单,因为vc也提供了自己的一些同名同功能的函数,直接使用vc提供的函数即可,而对于那些vc没有提供了函数,如argz_*之类的,可以将它们看成是vc库函数的一种有益补充。

关于平台依赖型的函数就有点复杂,因为有些处理函数是重名的,比如fopen之类的,这个时候只能采取函数重命名的方法,在cygwin的名称中加上一个cyg_之类的前缀。

此外还有一个重要的问题:头文件的包含路径问题。如果希望同时使用cygwinvc,那么同名头文件的包含就会引起相当的困扰。为此可以将cygwin中的头文件都加上一个比较长的路径,比如将

#include <stdio.h>

改为;

#include <cygwin/newlib/libc/include/stdio.h>

Cygwin的编译大致可以分为三步,首先生成libc.a的静态库,然后生成libm.a的静态库,最后生成cygwin.dll,好了,Let’s go………..

 

 

 

 

 

原创粉丝点击