很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意试一下,但是往往?linuxpȝ打ؕ了自q正常生活Q?〉装linuxpȝ把windowspȝl搞坏了Q导致自己无法正常生z;2>linux开发上手太难,写出W一个helloworld不亚于java的难度,环境配置怸着头脑。对于此Q我的看法是Q\不管q是陡Q终归你要走的,如果你愿意投入到linux开发的C中来Q不会安装linuxpȝQ不会配|工作环境是不能惌的?事实上,实要了解很多东西的原理Q不然很难排错:诸如Q硬盘引导器的引导原理、分区结构原理及linux分区l构和文件系l、环境变量的讄、种cȝ多的压羃包安装包的解压安装方法、用L理权限管理等常用命o、以至于驱动安装pȝ中文化等{异常琐的东东)?br />
本文试图跌q个难走的步骤,启用一个win环境下的linux仿真器(和linux下面的命令行开发环境基本一_Q用短短?0分钟的时_教你做出一个纯正的linux下gcc~译的helloworld。就象是买点心前先尝味道,不也是一件很愉快的事情么Q?注:cygwin事实上不仅有此模拟功能,它也是移植unix<-->winE序的一个很有效的工P也有人用它来做嵌入式pȝ开?
一、cygwin是什么?
q个问题你最好google一?cygwin的历?,或许能够获得更ؓ详尽的答案。简而言之,cygwin是一个在windowsq_上运行的 linux模拟环境Q是cygnus solutions公司开发的自由软gQ该公司开发了很多好东西,著名的还有eCosQ不q现已被Redhat收购Q。插一句废话,很多朋友不明?linux和unix的区别和联系Q在此也要介l一下。UNIX是一个注册商标,是要满一大堆条gq且支付可观费用才能够被授权使用的一个操作系l? linux是unix的克隆版本,是由其创始hLinus和诸多世界知名的黑客手工打造的一个操作系l。ؓ什么linux和unix之间有很多Y件可以很L的移植?因ؓlinux也满POSIX规范,所以在q行机制上跟unix相近。?
以下引用|上的一D话Q出处:http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspxQ,
用于说明cygwin的工作机Ӟcygnus当初首先把gccQgdbQgas{开发工兯行了改进Q他们能够生成q解释win32的目标文件。然后,他们要把q些工具UL到windowsq_上去。一U方案是Zwin32 api对这些工L源代码进行大q修改,q样做显焉要大量工作。因此,他们采取了一U不同的Ҏ——他们写了一个共享库(是cygwin dll)Q把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets{)装在里面,也就是说Q他们基?win32 api写了一个unixpȝ库的模拟层。这P只要把这些工L源代码和q个׃n库连接到一P可以用unixL上的交叉~译器来生成可以?windowsq_上运行的工具集。以q些UL到windowsq_上的开发工具ؓ基础Qcygnus又逐步把其他的工具Q几乎不需要对源代码进行修改,只需要修改他们的配置脚本QY件移植到windows上来。这P在windowsq_上运行bash和开发工兗用户工P感觉好像在unix上工作。关于cygwin实现的更详细描述Q请参?a target="_blank">http://cygwin.com/cygwin-ug-net/highlights.html
二、cygwin的安装?br /> cygwin的安装文件很Ҏ通过google扑ֈ。目前国内的|站上有"|络安装??本地安装?两种。标准的发行版应该是 |络安装版。两者ƈ无大不同Q下面介l一下安装的q程?br />
step1. 下蝲后,点击安装文g(setup.exe)q行安装Q第一个画面是GNU版权说明Q点"下一?N)?gt;"Q?br />q入安装模式选择画面?br />
step2. 安装模式?Install from Internet"?Download form Internet"?br />"Install from Local Directory" 三种?Install form Internet"是直接从internet上装Q适用于网速较快的情况。如果你和我一L速不是很快,或者说装过之后x下蝲的安装文件保存v来,下次不再下蝲了直接安装,应该选择"Download form Internet"Q下载安装的文gQ大U?0M左右Q?br />事实上,所谓的"本地安装?Q也是别Z|上下蝲全部文g后打的包(适用于中国国情嘛^_^)
step3. 接下来是选择安装目的路径和安装源文g所在的路径Q之后就q入了选择安装包所在的路径?br />注意了阿Q这里可是重头戏。我W一安装的时候就是没有看清这一步,l果没有把gcc装进去,D没法~译文g?br /> + All Default
+ Admin Default
....
+ Devel Default
+ Editors Default
....
如上图所C,你在q个TreeView的某个节点上双击Q就可以改变它的状态,如Default、Install、Uninstall、Reinstall四种状态。默认的都是Default状态,很多工具的默认状态都是不安装?br />在这里我选择了在Allq一行上后面的Default上点InstallQ全部安装,以免后患。(注意Q这里的树Ş控g和win下面的不同,你试试点在All上点 ?在Allq一行后面的Default上点Q会有不同的响应Q?br />
step4. 点下一步,安装成功。它会自动在你的桌面上徏立一个快h式?br />
好了Q下面就开始我的linux旅程了。双击cygwin的快h式进入系l?br />首先介绍几个单的linux命o?br />pwd 昄当前的\?br />cd 改变当前路径Q无参数时进入对应用Lhome目录
ls 列出当前目录下的文g。此命o有N多参敎ͼ比如ls -al
ps 列出当前pȝq程
kill 杀L个进E?br />mkdir 建立目录
rmdir 删除目录
rm 删除文g
mv 文g改名或目录改?br />man 联机帮助
less 昄文g的最末几?br />
׃linux下面的命令大多都有很多参敎ͼ可以l合使用。所以,每当你不会或者记不清楚改用那个参敎ͼ那个开关的时候,可以用man来查找,比如Q我x找ls怎么使用Q可以键?br />$ man ls
pȝ回显信息如下Q?br />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
: 很全是吧Q嘿ѝ?/span>
好了Q多说无意,让我们来写一?/span>
hello world
E序?/span>
# cd
q入?/span>
/home/administrator
目录Q我当前的登陆帐h
administrator
# mkdir source 建立一个叫?/span> source 的子目录
# cd source q入 /home/administrator/source
# vim hello.c
启动
vim
~辑器,来编写程序。好了,现在有必要简要介l一?/span>
vim
?/span>
?/span>
linux
界,有两大编辑器最有历双Ӏ其一?/span>
vi
Q其二是
emacs
?/span>
vi
现在已经演化成了
vim
Q比当前?/span>
vi
更ؓ强大?/span>
vim
?/span>
emacs
是两U截然不同的东西Q?/span>
vim
用简z的命o来完成功能,无论是查找、替换?/span>
正则表达式匹配、编译、链接、排错、函数间跌{{等{等都在命o行中完成Qƈ且它把方向键也集成在?/span>
hjkl
四个键之上,可以_用了
vim
基本上可以不用鼠标了
:p emacs
则是在功能强大上做文章,版本控制、模拟多U编辑环境、对文本q行各种操作Q可谓之一个强大的文本处理pȝ?/span>
emacs
是用诸如
Ctrl+Alt+K
之类的组合键来控制的Q?/span>
vim
则是?/span>
se(set
的羃?/span>
)
{简z命令来控制的?/span>
׃
cygwin
中只提供?/span>
vim(
能不能自p
emacs
我还没有试过
)
Q我们就先体验一?/span>
vim
?/span>
:p
vim
加蝲文本文g后分为命令模式和插入模式两种。插入模式,思义是输入~辑文本Q命令模式,则是输入各种
vim
的控制命令,常用的有Q?/span>
i
q入~辑模式
h
左移
j
下移
k
上移
l
右移
w
存盘
q
退?/span>
Q?/span>
执行
有些命o是可以组合用的Q如果你修改了某个文Ӟ惛_盘退出,则可以?/span> wq Q如果你x弃存盘,直接退出则可以使用 q! 好了大家体验一下吧Q记住:从编辑模式退回命令模式按 "Esc" Q再?/span> ":" Q在输入指oQ从命o模式q入~辑模式?/span> i Q初ơ?/span> vim 肯定很难受,嘿嘿Q不q用多了׃惯了Q确实很省劲?/span>
我们~辑
hello.c
文gQ输入:
#include
int main(void) {
printf( "Hello World!");
}
然后Q输?/span>
wq
命o退到命令行?/span>
输入~译指oQ?/span>
# gcc hello.c -o hello
~译成功后可以看一?/span>
# ls
看到
hello.exe
了吧Q嘿ѝ?/span>
好,让我们运行看看?/span>
# ./hello
效果如何Q不错吧Q?/span>
:)
okey
Q现在玩一?/span>
C++
?/span>
hello world
Q?/span>
# vim world.cpp
输入Q?/span>
#include
using namespace std;
void main() {
cout << "Hello World!";
}
~译
C++
E序要用
g++
# g++ world.cpp -o world
q行一下哈Q?/span>
# ./world
如何Q效果不错吧Q诸位都是高手,走到q步应该~些单程序都不成问题了吧 :p 好了Q关于如何编?/span> makefile 文gQ如何用 gdb 下次再说了?/span>
:
原文信息Q作? koov 来源: linux286C