`

What Is Cygwin?

    博客分类:
  • OS
阅读更多
在Windows操作系统下的gcc

第一节 GCC家族概览

GCC是一个原本用于Unix-like系统下编程的编译器。不过,现在GCC也有了许多Win32下的移植版本。所以,也许对于许多Windows开发者来说,GCC还是一个比较陌生的东西。所以,我希望通过这章的叙述,让你——一个Windows开发者对GCC这一个优秀的编译器有一个大概的了解。

历史

GCC是GNU公社的一个项目。是一个用于编程开发的自由编译器。最初,GCC只是一个C语言编译器,他是GNU C Compiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC以经是一个包含众多语言的编译器了。其中包括 C,C++,Ada,Object C和Java等。所以,GCC也由原来的GNU C Compiler变为GNU Compiler Collection。也就是 GNU编译器家族 的意思。当然,如今的GCC借助于他的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。直到现在,GCC的历史仍然在继续,他的传奇仍然被人所传颂。

Windows下的GCC家族

起初,GCC是用于Unix,Unix-like系统的编译器。不过,现在Windows下也出现了GCC的稳定移植版。这要感谢Internet上众多程序员的共同努力。

如今,在Windows下比较流行的GCC移植版主要有三个。他们是 MinGW,Cygwin和Djgpp。虽然,Djgpp是应用于DOS系统的,考虑到windows对DOS的兼容,所以也将Djgpp纳入其中了。

总体来说,MinGW,Cygwin和Djgpp各有特色,针对不同的应用场合,可以选择不同的移植版来满足需要。MinGW这个系列的移植,主要方向是让GCC的Windows移植版能使用Win32API来编程。而Cygwin的目标是能让Unix-like下的程序代码在Windows下直接被编译。至于Djgpp,则是想让DOS下也能用上GCC。

所以,对于开发人员不同的需求。选择合适的移植版会让工作变得轻松而高效。

本书的GCC

我个人对GCC的移植版都非常喜欢。不论是MinGW还是Cygwin,亦或是Djgpp。在本书中,除了特殊说明以外,所述的内容适合所有这三种移植版。不过,考虑到现在在Windows下用的比较多的是MinGW系列。再加上MinGW较Cygwin和Djgpp安装和使用更为简便。所以,建议读者学习时还是使用MinGW。

第二节 入乡随俗的MinGW

简介

MinGW是Minimalistic GNU for Windows 的缩写。她是一个建立在GCC和binutils 项目上的编译器系统。和其他GCC的移植版相比,她可以说是最接近Win32的一个了。因为,MinGW几乎支持所有的Win32API,这也是MinGW的特色之一。她所连接的程序,不需要任何第三方库就可以运行了。在某种程度上看,MinGW更像是VC的替代品。

获得与安装

MinGW可以从MinGW的官方网站 http://www.mingw.org 上获得。

如果,你要安装MinGW,那么你有两种安装方案。下面我来一一介绍。

安装方案一:

首先,你要从 http://www.mingw.org/download.shtml 上下载如下几个压缩包。考虑到文件的更新和文章的灵活性。我将只写出文件的主要部分,将省去版本好和更新日期。

gcc-core
C语言编译器

gcc-c++
C++语言编译器

mingw-runtime
MinGW的运行时库(这个必须安装)

win32api
win32的API函数头文件和连接库

binutils
MinGW的汇编器和连接器等基础工具

gdb
MinGW中的调试工具

mingw32-make
Make工具,用以更好的管理你的项目


然后,将上述文件逐一下载,然后全部解压缩到一个目录下就可以了,我这里假设你是移动到$(MINGW)这个目录下了。这样,你的MinGW就算安装成功了。最后到DOS终端上,将当前目录转换成 $(MINGW)/bin 下。输入

C:\>gcc -v


看到一段gcc的版本信息,这就能说明,你的gcc已经可以正常工作了。

安装方案二:

你可以从 http://www.mingw.org/download.shtml 上下载 MinGW5.0.2.exe 这个程序。至少,在我写此文的时候,这个是最新版本。

下载以后运行安装,至于安装过程,我想我就不一一介绍了。对于Windows下的开发人员,我想这个应该不是什么问题了。

在一切都选择好以后。这个程序就开始从Internet上下载所需要的压缩包。然后,逐一解开,安装。

总体来说,两种方法各有长处。不过,本人偏爱第一中方法。因为,控制度高,而且,更新也比较简单。自己心里也比较明了。

环境设置

对于我们这些使用者来说,最好是能够简单方便的使用工具。所以,我们就需要设置环境,便于我们使用MinGW。对于设置,我们只需要在环境变量中的PATH 变量中,添加$(MINGW)/bin这个路径就可以了。这样,你就可以在任何目录下使用MinGW了。

第三节 人在曹营心在汉的Cygwin

介绍

Cygwin,其实并不是一个GCC。她是让Windows拥有Unix-like环境的软件。所以,GCC自然也就会包含在里面。不过,对于开发者,Cygwin是一个开发环境。而对于用户来说Cygwin是一个运行环境。

Cygwin唯一和MinGW最大的区别在于,使用Cygwin可以在Windows下调用Unix-like的系统函数。比如进程函数,等等。所以,虽然说,Cygwin是运行在Windows下的,但是她还是使用的是Unix-like系统的函数和思想。

获得与安装

Cygwin可以从Cygwin的官方网站获得安装程序 http://www.cygwin.com/

在网站上下载Cygwin的安装程序setup.exe。然后运行便可以了。

关于前面的设置,我想不用多做介绍了。因为,对于这些我想Windows下的开发人员应该相当清楚了。

在到了选择安装的组件时,在Devel 选项下,将gcc-core,gcc-g++ 等前的skip 点击成你所需要的版本号。

然后在 Lib选项卡中,将glib2,glib2-devel,glib2-runtime前的skip点成版本号。

接下来,就点击next就可以了。在一段漫长的等待时间后,你的Cygwin开发环境就算安装好了。

相对来说,Cygwin的安装和配置都比较简单。因为,Cygwin提供了一个比较健全的安装程序。

使用

在安装目录下,运行cygwin.bat就可以启动cygwin环境了。这是一个模拟Linux的环境,所以很多地方可能和Dos有比较大的差距。不过,你编译出的程序可以直接在其他没有安装Cygwin的机器上运行。还有,如果要切换到windows下的其他盘下,比如D盘。那么就可以使用

$cd /cygdrive/d/


第四节 脚踏两只船的Djgpp

介绍

Djgpp,是一个在纯Dos下的GCC移植版本。她使用一些软件将纯Dos设置成32位的环境,并运行由她编译出来的程序。总体来说,Djgpp并不是一个Windows的移植版。不过,她确实可以在Windows下运行。对于一些特殊应用。Djgpp是唯一适合的。

获得与安装

Djgpp,可以从Djgpp的官方网站上下载 http://www.delorie.com/djgpp/

不过,这里Djgpp为用户做了更好多的安排。她为用户提供了一个定制安装的页面。

http://www.delorie.com/djgpp/zip-picker.html

您只需要在上面填写响应的内容,然后递交。她将会给你一份完整的安装方案。

使用

相对来说,Djgpp我并不是经常使用。所以,本文中在没有特殊说明情况下,不会使用Djgpp的。


   Cygwin是一个用于在Windows上模拟Linux环境的软件。它可以作为那些虚拟机软件的一个部分替代品。之所以将它排在第一个来介绍,是因为它实在给我帮了很大的忙。

运行Cygwin后,你会得到一个类似Linux的Shell环境,在其中你可以使用绝大部分Linux软件和功能。如Gcc,Make,Vim,Emacs等等。总之如果你想使用某个Linux下的功能,而windows上又找不到好的替代品的话,你就可以用Cygwin。我使用的最频繁的是Gcc和Make。我经常用它们来编译一些我从网上下载的开源的工程。这些工程在Windows上编译往往很麻烦。我也用它做过X Server来连接一台真正的Linux服务器,用来测试一个用tcl/tk编写的跨平台的用户界面程序。下面,我逐步介绍Cygwin的基本用法。

使用
   安装完成后,在桌面上会有一个Cygwin的图标,双击它,会出现一个windows的命令窗口,过一会,你就会见到熟悉(或者陌生)的 Linux的Shell界面。试一试ls ,是不是可以工作了?

从今往后,你就可以自由的在windows下使用Linux的软件了。基本上你能用到,cygwin都有。如果你要开发可以在两个平台上运行的程序, cygwin也是你前期试验的好地方。从互联网上下载的各种开源代码,也可以在Cygwin里编译,运行,调试。
分享到:
评论

相关推荐

    WinAircrackPack

    无线网络破解工具What is aircrack ? aircrack is a set of tools for auditing wireless networks: + airodump: 802.11 packet capture program + aireplay: 802.11 packet injection program + aircrack: ...

    libtiff for VC&VS.NET tiff库

    one line to give the program\'s name and an idea of what it does. Copyright (C) Ports Project 2007/01/30 horse_b This program is free software; you can redistribute it and/or modify it under the terms...

    Managing Projects With GNU Make

    It is also popular because it is free software and provides a version for almost every platform, including a version for Microsoft Windows as part of the free Cygwin project. Managing Projects with ...

    bochs user manual 单html文件+pdf 英文原版

    1.1. What is Bochs? 1.2. Who uses Bochs? 1.3. Is Bochs right for me? 1.4. Will it work for me? 1.5. Bochs License 1.6. Third Party Software Licensing and Temporary Files 1.7. Features 1.8. Supported ...

    clucene源码

    * For Linux, MacOSX, cygwin and MinGW build information, read INSTALL. * Boost.Jam files are provided in the root directory and subdirectories. * Microsoft Visual Studio (6&7) are provided in the win...

    Python安装包version 3.1.5

    On OSX and Cygwin, the executable is called python.exe; elsewhere it's just python. On Mac OS X, if you have configured Python with --enable-framework, you should use "make frameworkinstall" to do ...

    SRS 2.0-258 windows版本

    # Some platforms allow to define FD_SETSIZE (if select() is used), e.g.: DEFINES += -DFD_SETSIZE=4096 ##################################################################################### if [ $SRS...

    romfs.2.0.x.gz

    Many thanks to Yu Chen who has sent in build instructions for Cygwin targets. He has also provided precompiled binaries that can be extracted from "/". Nov 2002 Fernando José Cardozo de Sá has ...

    C/C++开发工具用户指南(C/C++ Development Toolkit User Guide)

    - `'g++' (或 'make') is not recognized as an internal or external command, operable program or batch file` - 检查路径配置: - 在命令提示符中输入 `PATH` 查看当前路径设置。 - 确保包含构建工具的路径...

    vim数据库插件dbext_420

    vim的数据库连接插件,... function will be called each time the result window is updated. This function can be used to do anything, for example, syntax highlighting the result set in the result window.

    Unison使用手册

    (What is a Conflict?) - **定义**: 冲突发生在两台机器对同一个文件进行了不同的更改时。 - **处理**: Unison 提供了多种策略来解决这类冲突。 ##### 5.5 调和(Reconciliation) - **定义**: 调和是指解决冲突...

    第7章 调试工具.pdf

    - **显示变量的数据类型**:使用`whatis`或`ptype`命令。 - **修改变量的值**:使用`set variable [variable name] = [value]`命令。 #### 程序执行与函数调用 - **单步执行**:使用`step`或`s`命令逐行执行程序;...

    Springer.The.Developer’s.Guide.to.Debugging.2008.pdf

    7.3.1 How to Determine What the Current Thread is Executing . 94 7.3.2 Analyzing the Threads of the Program . . . . . 95 7.4 Familiarize Yourself with Threading Analysis Tools . . . . . 96 7.5 ...

Global site tag (gtag.js) - Google Analytics