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 实现的更详细描述,请参考 cygwin/cygwin-ug-net/highlights.html
二、 cygwin 的安装。
cygwin 的安装文件很容易通过 google 到。目前国内的网站上有 " 网络安装版 " 和 " 本地安装版 " 两种。标准的发行版应该是 网络安装版。两者并无大不同,下面介绍一下安装的过程。
step1. 下载后,点击安装文件 () 进行安装,第一个画面是 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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论