最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Cygwin,gcc的使用

来源:动视网 责编:小OO 时间:2025-09-25 13:49:27
文档

Cygwin,gcc的使用

Cygwin,gcc的使用(一)很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意尝试一下,但是往往怕linux系统打乱了自己的正常生活:1〉装linux系统把windows系统给搞坏了,导致自己无法正常生活;2>linux开发上手太难,写出第一个helloworld不亚于java的难度,环境配置摸不着头脑。对于此,我的看法是:路不管平还是陡,终归你要走的,如果你愿意投入到linux开发的社群中来,不会安装linux系统,不会配置工作环境是不能想象的。(事实上,确实要了解很多
推荐度:
导读Cygwin,gcc的使用(一)很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意尝试一下,但是往往怕linux系统打乱了自己的正常生活:1〉装linux系统把windows系统给搞坏了,导致自己无法正常生活;2>linux开发上手太难,写出第一个helloworld不亚于java的难度,环境配置摸不着头脑。对于此,我的看法是:路不管平还是陡,终归你要走的,如果你愿意投入到linux开发的社群中来,不会安装linux系统,不会配置工作环境是不能想象的。(事实上,确实要了解很多
Cygwin , gcc 的使用(一) 

   很多用 windows 的朋友不习惯于用 linux 的开发环境。虽然很乐意尝试一下,但是往往怕 linux 系统打乱了自己的正常生活: 1 〉装 linux 系统把 windows 系统给搞坏了,导致自己无法正常生活; 2>linux 开发上手太难,写出第一个 helloworld 不亚于 java 的难度,环境配置摸不着头脑。 对于此,我的看法是:路不管平还是陡,终归你要走的,如果你愿意投入到 linux 开发的社群中来,不会安装 linux 系统,不会配置工作环境是不能想象的。 ( 事实上,确实要了解很多东西的原理,不然很难排错:诸如,硬盘引导器的引导原理、分区结构原理及 linux 分区结构和文件系统、环境变量的设置、种类繁多的压缩包安装包的解压安装方法、用户管理权限管理等常用命令、以至于驱动安装系统中文化等等异常琐碎的东东 ) 。 

本文试图跳过这个难走的步骤,启用一个 win 环境下的 linux 仿真器(和 linux 下面的命令行开发环境基本一致),用短短的 20 分钟的时间,教你做出一个纯正的 linux 下 gcc 编译的 helloworld 。就象是买点心前先尝尝味道,不也是一件很愉快的事情么? ( 注: cygwin 事实上不仅有此模拟功能,它也是移植 unix<-->win 程序的一个很有效的工具,也有人用它来做嵌入式系统开发 ) 

一、 cygwin 是什么? 

   这个问题你最好 google 一下 "cygwin 的历史 ", 或许能够获得更为详尽的答案。简而言之, cygwin 是一个在 windows 平台上运行的 linux 模拟环境,是 cygnus solutions 公司开发的自由软件(该公司开发了很多好东西,著名的还有 eCos ,不过现已被 Redhat 收购)。插一句废话,很多朋友不明白 linux 和 unix 的区别和联系,在此也简要介绍一下。 UNIX 是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统 ;linux 是 unix 的克隆版本,是由其创始人 Linus 和诸多世界知名的黑客手工打造的一个操作系统。为什么 linux 和 unix 之间有很多软件可以很轻松的移植?因为 linux 也满足 POSIX 规范 , 所以在运行机制上跟 unix 相近。以下引用网上的一段话用于说明 cygwin 的工作机制: cygnus 当初首先把 gcc , gdb , gas 等开发工具进行了改进,使他们能够生成并解释 win32 的目标文件。然后,他们要把这些工具移植到 windows 平台上去。一种方案是基于 win32 api 对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库 ( 就是 cygwin dll) ,把 win32 api 中没有的 unix 风格的调用(如 fork,spawn,signals,select,sockets 等)封装在里面,也就是说,他们基于 win32 api 写了一个 unix 系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用 unix 主机上的交叉编译器来生成可以在 windows 平台上运行的工具集。以这些移植到 windows 平台上的开发工具为基础, cygnus 又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到 windows 上来。这样,在 windows 平台上运行 bash 和开发工具、用户工具,感觉好像在 unix 上工作。关于 cygwin 实现的更详细描述,请参考 http://cygwin.com/cygwin-ug-net/highlights.html 

二、 cygwin 的安装。 

  cygwin 的安装文件很容易通过 google 找到。目前国内的网站上有 " 网络安装版 " 和 " 本地安装版 " 两种。标准的发行版应该是   网络安装版。两者并无大不同,下面介绍一下安装的过程。 

  step1. 下载后,点击安装文件 (setup.exe) 进行安装,第一个画面是 GNU 版权说明,点 " 下一步 (N) — >" ,进入安装模式选择画面。 

  step2. 安装模式有 "Install from Internet" 、 "Download form Internet" 、 

"Install from Local Directory" 三种。 "Install form Internet" 就是直接从 internet 上装,适用于网速较快的情况。如果你和我一样网速不是很快,或者说装过之后想把下载的安装文件保存起来,下次不再下载了直接安装,就应该选择 "Download form Internet" ,下载安装的文件(大约 40M 左右)。 

  step3. 接下来是选择安装目的路径和安装源文件所在的路径,之后就进入了选择安装包所在的路径。 

注意了阿,这里可是重头戏。我第一安装的时候就是没有看清这一步,结果没有把 gcc 装进去,导致没法编译文件。 

   + All  Default 

      + Admin Default 

       .... 

      + Devel   Default 

      + Editors Default 

      .... 

如上图所示,你在这个 TreeView 的某个节点上双击,就可以改变它的状态,如 Default 、 Install 、 Uninstall 、 Reinstall 四种状态。默认的都是 Default 状态,很多工具的默认状态都是不安装。在这里我选择了在 All 这一行上后面的 Default 上点 Install ,全部安装,以免后患。(注意:这里的树形控件和 win 下面的不同,你试试点在 All 上点 和 在 All 这一行后面的 Default 上点,会有不同的响应) 

  step4. 点下一步,安装成功。它会自动在你的桌面上建立一个快捷方式。 

  好了,下面就开始我的 linux 旅程了。双击 cygwin 的快捷方式进入系统。 

首先介绍几个简单的 linux 命令。 

pwd   显示当前的路径 

cd    改变当前路径,无参数时进入对应用户的 home 目录 

ls    列出当前目录下的文件。此命令有 N 多参数,比如 ls -al 

ps    列出当前系统进程 

kill  杀死某个进程 

mkdir 建立目录 

rmdir 删除目录 

rm    删除文件 

mv    文件改名或目录改名 

man   联机帮助 

less  显示文件的最末几行 

由于 linux 下面的命令大多都有很多参数,可以组合使用。所以,每当你不会或者记不清楚改用那个参数,那个开关的时候,可以用 man 来查找,比如,我想查找 ls 怎么使用,可以键入 

$  man ls 

系统回显信息如下: 

LS(1)                          FSF                          LS(1) 

NAME 

       ls - list directory contents 

SYNOPSIS 

       ls [OPTION]... [FILE]... 

DESCRIPTION 

       List information about the FILEs (the current directory by 

       default).  Sort entries alphabetically if none of -cftuSUX 

       nor --sort. 

       -a, --all 

             do not hide entries starting with . 

       -A, --almost-all 

             do not list implied . and .. 

       -b, --escape 

             print octal escapes for nongraphic characters 

       --block-size=SIZE 

             use SIZE-byte blocks 

很全是吧,嘿嘿。 

好了,多说无意,让我们来写一个 hello world 程序。 

# cd 

  进入了 /home/administrator 目录,我当前的登陆帐号是 administrator 

# mkdir source 

  建立一个叫做 source 的子目录 

# cd source 

  进入 /home/administrator/source 

# vim hello.c 

   启动 vim 编辑器,来编写程序。好了,现在有必要简要介绍一下 vim 。 

在 linux 界,有两大编辑器最有历史。其一是 vi ,其二是 emacs 。 vi 现在已经演化成了 vim ,比当前的 vi 更为强大。 vim 和 emacs 是两种截然不同的东西, vim 强调用简洁的命令来完成功能,无论是查找、替换、正则表达式匹配、编译、链接、排错、函数间跳转等等等等都在命令行中完成,并且它把方向键也集成在了 hjkl 四个键之上,可以说,用了 vim 基本上可以不用鼠标了 :p  emacs 则是在功能强大上做文章,版本控制、模拟多种编辑环境、对文本进行各种操作,可谓之一个强大的文本处理系统。 emacs 是用诸如 Ctrl+Alt+K 之类的组合键来控制的; vim 则是用 se(set 的缩写 ) 等简洁命令来控制的。 

   由于 cygwin 中只提供了 vim( 能不能自己装 emacs 我还没有试过 ) ,我们就先体验一下 vim 吧。 

vim 加载文本文件后分为命令模式和插入模式两种。插入模式,顾名思义就是输入编辑文本;命令模式,则是输入各种 vim 的控制命令,常用的有: 

   i  进入编辑模式 

   h  左移 

   j  下移 

   k  上移 

   l  右移 

   w  存盘 

   q  退出 

   ! 强调执行 

有些命令是可以组合使用的,如果你修改了某个文件,想存盘退出,则可以使用 wq ;如果你想放弃存盘,直接退出则可以使用 q!  好了大家体验一下吧,记住:从编辑模式退回命令模式按 "Esc" ,再按 ":" ,在输入指令,从命令模式进入编辑模式用 i ,初次使用 vim 肯定很难受,嘿嘿,不过用多了就习惯了,确实很省劲。 

我们编辑 hello.c 文件,输入: 

#include 

int main(void) { 

  printf( "Hello World!"); 

然后,输入 wq 命令退到命令行。 

输入编译指令: 

# gcc hello.c -o hello 

编译成功后可以看一下 

# ls 

看到 hello.exe 了吧,嘿嘿。 

好,让我们运行看看。 

# ./hello 

效果如何?不错吧? :) 

okey ,现在玩一个 C++ 的 hello world , 

# vim world.cpp 

输入: 

#include 

using namespace std; 

void main() { 

cout << "Hello World!";

编译 C++ 程序要用 g++ 

# g++ world.cpp -o world 

运行一下哈, 

# ./ world 

如何,效果不错吧?诸位都是高手,走到这步应该编些简单程序都不成问题了吧。 

编译文件生成.exe  原来加上了./  

发表于 @ 2010年04月10日 13:22:00 | 评论( 0 ) | 编辑| 举报| 收藏 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bruce0532/archive/2010/04/10/5470215.aspx

文档

Cygwin,gcc的使用

Cygwin,gcc的使用(一)很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意尝试一下,但是往往怕linux系统打乱了自己的正常生活:1〉装linux系统把windows系统给搞坏了,导致自己无法正常生活;2>linux开发上手太难,写出第一个helloworld不亚于java的难度,环境配置摸不着头脑。对于此,我的看法是:路不管平还是陡,终归你要走的,如果你愿意投入到linux开发的社群中来,不会安装linux系统,不会配置工作环境是不能想象的。(事实上,确实要了解很多
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top