在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,这个dll以windows的api实现了Linux下的大部分API。另一个部分则是newlib,实际上就是glibc,它将调用cygwin1.dll中的实现,然后以glibc的形式呈现给用户使用。
这两部分的代码可以通过CVS在cygwin.com的服务器上获得。
Vs2008是一个不错的集成开发环境,如果能够将cygwin用vs2008编译,并使之与vs2008下的c runtime library协同工作,那么其产生的效益将是非常大的。大到什么程度,自己想去吧,呵呵!由于cygwin编译出来的程序最终要在windows下运行,最终也只能使用windows提供了服务,这就为cygwin在vs2008下的编译提供了可能。
因为cygwin最终提供的是glibc的api,而又希望它可以和vs2008的libc混合使用,那么分析glibc的代码就是首要的任务。
glibc主要可以分为应用型的函数和平台依赖型的函数,前者如字符串处理函数,后者如io函数。
对于前一类的处理比较简单,因为vc也提供了自己的一些同名同功能的函数,直接使用vc提供的函数即可,而对于那些vc没有提供了函数,如argz_*之类的,可以将它们看成是vc库函数的一种有益补充。
关于平台依赖型的函数就有点复杂,因为有些处理函数是重名的,比如fopen之类的,这个时候只能采取函数重命名的方法,在cygwin的名称中加上一个cyg_之类的前缀。
此外还有一个重要的问题:头文件的包含路径问题。如果希望同时使用cygwin和vc,那么同名头文件的包含就会引起相当的困扰。为此可以将cygwin中的头文件都加上一个比较长的路径,比如将
#include <stdio.h>
改为;
#include <cygwin/newlib/libc/include/stdio.h>
Cygwin的编译大致可以分为三步,首先生成libc.a的静态库,然后生成libm.a的静态库,最后生成cygwin.dll,好了,Let’s go………..
- 在vs2008下使用cygwin(1):前言
- 在vs2008下使用cygwin(22):使用tls
- 在vs2008下使用cygwin(2):i686-pc-cygwin/newlib/Makefile分析
- 在vs2008下使用cygwin(3):i686-pc-cygwin/newlib/libc/Makefile分析
- 在vs2008下使用cygwin(4):i686-pc-cygwin/newlib/libc/argz/Makefile分析
- 在vs2008下使用cygwin(5):i686-pc-cygwin/newlib/libc/stdlib/Makefile分析
- 在vs2008下使用cygwin(6):i686-pc-cygwin/newlib/libc/ctype/Makefile分析
- 在vs2008下使用cygwin(7):i686-pc-cygwin/newlib/libc/search/Makefile分析
- 在vs2008下使用cygwin(8):i686-pc-cygwin/newlib/libc/stdio/Makefile分析
- 在vs2008下使用cygwin(9):i686-pc-cygwin/newlib/libc/stdio64/Makefile分析
- 在vs2008下使用cygwin(10):i686-pc-cygwin/newlib/libc/string/Makefile分析
- 在vs2008下使用cygwin(11):i686-pc-cygwin/newlib/libc/signal/Makefile分析
- 在vs2008下使用cygwin(12):i686-pc-cygwin/newlib/libc/time/Makefile分析
- 在vs2008下使用cygwin(13):i686-pc-cygwin/newlib/libc/locale/Makefile分析
- 在vs2008下使用cygwin(14):i686-pc-cygwin/newlib/libc/reent/Makefile分析
- 在vs2008下使用cygwin(15):i686-pc-cygwin/newlib/libc/misc/Makefile分析
- 在vs2008下使用cygwin(16):i686-pc-cygwin/newlib/libc/machine/i386/Makefile分析
- 在vs2008下使用cygwin(17):i686-pc-cygwin/newlib/libc/posix/Makefile分析
- JasperReport详细介绍(二)
- A growing field of merging beauty and science
- 讨厌失败
- 写入出字符串到一个文件而不覆盖原文件的内容(追加)
- 50种方法巧妙优化你的SQL Server数据库
- 在vs2008下使用cygwin(1):前言
- “文件共享锁定数溢出” 原因及解决方法
- stat函数说明
- accept()函数说明
- 水晶报表打包
- JasperReport详细介绍(三)
- Flex 跨域访问解决方案
- javascript获取IE客户端IP及MAC的实现
- JasperReport报表设计总结(一)