cygwin应用

cygwin应用
cygwin应用

cygwin的安装,vi的使用,gcc,g++的使用

从windows到linux -- 编程篇-- cygwin,在win中开发linux程序

很多用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实现的更详细描述,请参考https://www.360docs.net/doc/0218730687.html,/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吧:p

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

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

好了,关于如何编写makefile文件,如何用gdb下次再说了。

Linux开发一路过来cygwin->make->gcc

1.Cygwin

详细的介绍参见:https://www.360docs.net/doc/0218730687.html,/wiki/Cygwin

从使用角度来看:Cygwin就是一个windows软件,该软件就是在windows上仿真linux 操作系统。通过虚拟机安装一个linux操作系统也可以实现上述情景。但是Cygwin更加体现着两种操作系统直接互访的功能:Cygwin目录下的所有文件直接就可以在windows下可见操作;而Cygwin运行起来后也可以linux方式直接访问windows下的其余任何文件。

其实window的控制台也是干这种事的,只不过控制台仿真的是MS-DOS;Cygwin仿真的是Linux。MS-DOS已经退出历史舞台,不再更新,现在只能利用它们曾经有的功能。而利用Cygwin,就打开Linux的大门,引入了linux世界无所不能无穷无尽的功能。

使用层面上,Cygwin就是Linux。Bash shell就是其终端交互的界面;可能也有GUI 的界面,GHOME桌面等,不过没有用过。

常用命令

在Bash shell的命令行交互中可以输入很多命令运行。例如:

命令说明命令说明

touch 新建文件cmd 切换到windows控制台,可以运行windows程

rm 删除文件--help 参数,显示命令帮助

mkdir 新建目录man 显示命令帮助

rmdir 删除目录info 显示命令更详细帮助

ls 显示文件和目录ps 显示进程

cd 改当前目录cd / echo 输出变量值,echo $PA TH

cp 复制文件find 查找文件

mv 移动文件diff 比较文件差异

查看命令帮助文档时,按Ctrl+Z 或Ctrl+C 退出命令

更多命令参考:

https://www.360docs.net/doc/0218730687.html,/special/linuxcom/Index.html

命令位置

这些命令之所以可用,是因为对应的exe都放在/bin目录下。如果追加扩展的exe放于此目录,也是可以运行的。

此外,bash也可以看作一个脚本语言,其比批处理更灵活,内部通过正则表达式可以最大发挥文本的功能;流程控制也具备了顺序编程语言的特点;熟悉其变量、方法和脚本文件的组织和使用,可以做很多日常的操作维护。

2.make + makefile

make和makefile就相当于java中的ant 和build.xml。如果说批处理文件是window系统来解析执行;那么makefile就相当于批处理文件,make命令就相当于windows操作系统专门负责解析执行了。

可能更多的是程序员在软件编译执行分发部署中应用make,让人以为make属于专业人士的瑞士军刀,普通人都敬而远之。其实make确实是一个通用的功能。

make

总体上说来,make的运行方式和ant极其相似:

具体参见

https://www.360docs.net/doc/0218730687.html,/htmldata/2005_01/1/3/article_1145_1.h tml

运行格式如下:make [-f配置文件] [当前命令]

其中:

如果不指定配置文件,要求当前目录下存在“makefile”或“Makefile”文件。

如果不指定当前命令,那么缺省执行第一个命令。

makefile

而makefile文件的格式主要分为:

[宏定义段] + [命令段]

宏包括:

宏的定义:CC0=gcc

宏的使用:CC0= $(CC)

命令包括:

命令名:[依赖命令]

[命令行]

[命令行]

特别说明:

?如果一个命令段包括多行,行尾用TAB分隔,最后一行后不能有空格。

?注释通过# 实现

?依赖顺序会自动执行

3.gcc 与make

使用make更多的人是程序员,他们主要用来程序的编译连接分发,在很久以前一直以来使用的更多的是C或C++语言。最终用来辅助程序开发的真正命令其实是gcc;make只是物流处理中心而已。

功能

gcc又是如何处理程序的呢?这又涉及到传统的c或C++编译型语言的特点,以及整个处理流程。

相关可以参考:

https://www.360docs.net/doc/0218730687.html,/gnu/gcc/gcc.htm

https://www.360docs.net/doc/0218730687.html,/art/200806/75991.htm

https://www.360docs.net/doc/0218730687.html,/u/13991/showart.php?id=96714

一般的编译处理流程:

流程文件举例过程命令行说明可选项阶段

A源代码hello.c源代码B编译预处理的源代码hello.i主要是宏展开优化

中间过程C编译后的目标文件hello.o编译-c-I.:当前目录查找h

D最终可执行文件

动态库

静态库hello.exe

hello.so

hello.a

连接

-shared

ar cqs libso.a

so.o

-L.:当前目录查找dll

-la:需要查找liba.so

-I.:当前目录查找h

结果

一般说来,gcc可以将任何前一阶段的文件生成任何后一段的文件。但是我们可以知需要关心最初的源代码A、中间的C以及最后的结果D。这样方便记忆:

如果将源代码编译,用–c 选项;否则任何阶段就是直接生成最终的结果文件。

不过,可能存在源代码还存在依赖动态库静态库情况,这就需要在连接阶段考虑如何引进相关dll。

一个例子如下,参照:https://www.360docs.net/doc/0218730687.html,/blog/261176

gcc -o main -O2 -L. -lhello main.c

●-L指定到哪个附加路径下面去寻找共享库,现在指定在当前目录下面寻找;

●-l 指定链接到哪个共享库上面,我们传的参数hello,那么gcc就会自动链接到

libhello.so这个共享库上面- 命名规则;

●-I 指定到哪个附加路径下面去寻找h文件,当前没有用到,建议在头文件中指

明。

例子

以下是一个完整的makefile例子,可以根据实际情况修改

#方便在不同gcc编译器间切换,修改CC即可

CC0=gcc

CC1=arm-apple-darwin-gcc

CC=$(CC0)

#方便在不同gcc编译器间切换,修改LDFLAGS即可

LDFLAGS0=-lobjc

LDFLAGS1=

LDFLAGS=$(LDFLAGS0)

LD=$(CC)

#缺省生成最终结果

# -lso 表示要依赖libso.so 或者libso.a

# -L. 表示在当前目录中查找动态库

all: testso

testso: testso.o

$(LD) $(LDFLAGS) -o testso.exe $^ -lso -L.

#编译:*.m->*.o

%.o: %.m

$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

#清除临时

clean:

rm -f *.o *.exe *.so *.a

#连接:静态库

a:

ar cqs libso.a so.o

#连接:动态库

so:

$(CC) so.m -shared -o libso.so -fPIC

辅助命令

这里用到几个与程序相关的命令:

nm: 专门针对exe或者so;可以查看程序的分段情况以及函数调用情况

strings: 针对任何文件;查看使用了哪些函数

strip: 去除符号表,可以减轻exe或so大小,但是不再支持调试信息输出

Iphone darwin gcc

利用iphone破解版的gcc时,发现和缺省的gcc存在一点小区别:

?最后的可执行文件名:如果指定hello,gcc会自动生成为hello.exe;但是

iphone却不带后缀。建议在makefile全部加上后缀

?不再支持“-Wl,-soname”

4.C的程序结构组织

可以参照:http://www.shanghai.ws/gnu/gcc_1.htm

各类文件格式

各类文件格式如下,从左到右恰好也是文件的处理过程:

后缀类型后缀类型后缀类型后缀类型

.c C源程序.i预处理后C文件.o编译后目标

文件

.a连接后归档文件

.C .cxx .cc C++源程序.ii预处理后C++文

.so连接后动态库结

果文件

.m Objective-C

源程序

.exe连接后exe文件.s汇编源程序

.S汇编源程序

.h各种c头文

静态库和动态库的生成

利用gcc + make可以实现。

gcc -o main -O2 -L. -lhello main.c

静态库和动态库的运行时位置查找

参见:

https://www.360docs.net/doc/0218730687.html,/u/16651/showart.php?id=434959

●编译目标代码时指定的动态库搜索路径;

●环境变量LD_LIBRARY_PA TH指定的动态库搜索路径;

●配置文件/etc/ld.so.conf中指定的动态库搜索路径;

●默认的动态库搜索路径/lib;

●默认的动态库搜索路径/usr/lib。

但是在cygwin下找不到“/etc/ld.so.conf”,郁闷。

gcc的选项(part),cygwin 编译的时候会用到

[转载自https://www.360docs.net/doc/0218730687.html,]

[介绍]

gcc and g++分别是gnu的c & c++编译器gcc/g++在执行编译工作的时候,总共需要4步

1.预处理,生成.i的文件[预处理器cpp]

2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]

3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]

4.连接目标代码,生成可执行程序[链接器ld]

[参数详解]

-x language filename

设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后

缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀

名是.pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了

下一个参数的使用。

可以使用的参数吗有下面的这些

`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a

ssembler-with-cpp'.

看到英文,应该可以理解的。

例子用法:

gcc -x c hello.pig

-x no ne filename

关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型

例子用法:

gcc -x c hello.pig -x none hello2.c

-c

只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

例子用法:

gcc -c hello.c

他将生成.o的obj文件

-S

只激活预处理和编译,就是指把文件编译成为汇编代码。

例子用法

gcc -S hello.c

他将生成.s的汇编代码,你可以用文本编辑器察看

-E

只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.

例子用法:

gcc -E hello.c > pianoapan.txt

gcc -E hello.c | mo re

慢慢看吧,一个hello word 也要与处理成800行的代码

-o

制定目标名称,缺省的时候,gcc 编译出来的文件是a.o ut,很难听,如果你和我有同感

,改掉它,哈哈

例子用法

gcc -o hello.exe hello.c (哦,windo ws用习惯了)

gcc -o hello.asm -S hello.c

-pipe

使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题

gcc -pipe -o hello.exe hello.c

-ansi

关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inl ine typeof关键字,以及UNIX,vax等预处理宏,

-fno-asm

此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。

-fno-strict-proto type

只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.

而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说明的类型

-fthis-is-varialble

就是向传统c++看齐,可以使用this当一般变量使用.

-fcond-mismatch

允许条件表达式的第二和第三参数类型不匹配,表达式的值将为v o id类型

-funsigned-char

-fno-signed-char

-fsigned-char

-fno-unsigned-char

这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参数)或者signed char(后两个参数)

-include file

包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用#i nclude

例子用法:

gcc hello.c -include /root/pianopan.h

-imacros file

将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中

-Dmacro

相当于C语言中的#define macro

-Dmacro=defn

相当于C语言中的#define macro=defn

-Umacro

相当于C语言中的#undef macro

-undef

取消对任何非标准宏的定义

-Idir

在你是用#i nclude"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他

回先在你所制定的目录查找,然后再按常规的顺序去找.

对于#i nclude,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺

省的头文件目录查找

-I-

就是取消前一个参数的功能,所以一般在-Idir之后使用

-idirafter dir

在-I的目录里面查找失败,讲到这个目录里面查找.

-iprefix prefix

-iwithprefix dir

一般一起使用,当-I的目录查找失败,会到prefix+dir下查找

-nostdinc

使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置

-nostdin C++

规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创libg++库使用

-C

在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的

-M

生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c 来测试一下,很简单。

-MM

和上面的那个一样,但是它将忽略由#i nclude造成的依赖关系。

-MD

和-M相同,但是输出将导入到.d的文件里面

-MMD

和-MM相同,但是输出将导入到.d的文件里面

-Wa,option

此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序

-Wl.optio n

此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.

-llibrary

制定编译的时候使用的库

例子用法

gcc -lcurses hello.c

使用ncurses库编译程序

-Ldir

制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然

编译器将只在标准库的目录找。这个dir就是目录的名称。

-O0

-O1

-O2

-O3

编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高

-g

只是编译器,在编译的时候,产生调试信息。

-gstabs

此选项以stabs格式声称调试信息,但是不包括gdb调试信息.

-gstabs+

此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.

-ggdb

此选项将尽可能的生成gdb的可以使用的调试信息.

-static

此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么

动态连接库,就可以运行.

-share

此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.

-traditio nal

试图让编译器支持传统的C语言特性

[参考资料]

-Linux/UNIX高级编程

中科红旗软件技术有限公司编著.清华大学出版社出版

-Gcc man page

[ChangeLog]

-2002-08-10

v er 0.1 发布最初的文档

-2002-08-11

v er 0.11 修改文档格式

-2002-08-12

v er 0.12 加入了对静态库,动态库的参数

-2002-08-16

v er 0.16 增加了gcc编译的4个阶段的命令

运行gcc/egcs

**********运行gcc/egcs***********************

GCC 是GNU 的 C 和C++ 编译器。实际上,GCC 能够编译三种语言:C、C++ 和O bject C(C 语言的一种面向对象扩展)。利用gcc 命令可同时编译并连接C 和C++

源程序。

如果你有两个或少数几个 C 源文件,也可以方便地利用GCC 编译、连接并生成可

执行文件。例如,假设你有两个源文件main.c 和facto rial.c 两个源文件,现在要编

译生成一个计算阶乘的程序。

代码:

-----------------------

清单facto rial.c

-----------------------

int factorial (int n)

{

if (n <= 1)

return 1;

else

return factorial (n - 1) * n;

}

-----------------------

清单main.c

-----------------------

#i nclude

#i nclude

int factorial (int n);

int main (int argc, char **argv)

{

int n;

if (argc < 2)

{

printf ("Usage: %s n\n", argv [0]);

return -1;

}

else

{

n = atoi (argv[1]);

printf ("Facto rial of %d is %d.\n", n, facto rial (n));

}

return 0;

}

-----------------------

利用如下的命令可编译生成可执行文件,并执行程序:

$ gcc -o facto rial main.c factorial.c

$ ./facto rial 5

Facto rial of 5 is 120.

GCC 可同时用来编译 C 程序和C++ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是C++ 程序。在Linux 中,C 源文件的后缀名为.c,而C++ 源文件的后缀名为.C 或 .cpp。但是,gcc 命令只能编译C++ 源文件,而不能自动和C ++ 程序使用的库连接。因此,通常使用g++ 命令来完成C++ 程序的编译和连接,该程序会自动调用gcc 实现编译。假设我们有一个如下的C++ 源文件(hello.C):

#i nclude

void main (v o id)

{

cout << "Hello, wo rld!" << endl;

}

则可以如下调用g++ 命令编译、连接并生成可执行文件:

$ g++ -o hello hello.C

$ ./hello

Hello, wo rld!

**********************gcc/egcs 的主要选项*********

gcc 命令的常用选项

选项解释

-ansi 只支持ANSI 标准的C 语法。这一选项将禁止GNU C 的某些特色,

例如asm 或typeof 关键词。

-c 只编译并生成目标文件。

-DMACRO 以字符串―1‖定义MACRO 宏。

-DMACRO=DEFN 以字符串―DEFN‖定义MACRO 宏。-E 只运行C 预编译器。

-g 生成调试信息。GNU 调试器可利用该信息。

-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。-lLIBRARY 连接时搜索指定的函数库LIBRARY。

-m486 针对486 进行代码优化。

-o FILE 生成指定的输出文件。用在生成可执行文件时。

-O0 不进行优化处理。

-O 或-O1优化生成代码。

-O2 进一步优化。

-O3 比-O2 更进一步优化,包括inline 函数。

-shared 生成共享目标文件。通常用在建立共享库时。

-static 禁止使用共享连接。

-UMACRO 取消对MACRO 宏的定义。

-w 不生成任何警告信息。

-Wall 生成所有警告信息。

TinyOS在windows中安装步骤

1.TinyOS 1.1概要 TinyOS应用程序都是有一个或多个组件链接起来,从而形成一个完整的可执行程序。组件中实现了功能接口,同时也能使用其它组件提供的接口。 在接口定义中可以申明命令函数和事件函数,命令函数由接口提供者实现,事件函数由接口使用者实现。对于一个组件而言,如果它要使用某个组件接口中的命令,它必须实现这个接口的事件。一个组件可以使用或提供多个接口以及同一个接口的多个实例。 组件有两种类型:模块(module)和配置(configuration)。模块提供应用程序代码,实现一个或多个接口;配置则是用来将其它组件装配起来,将各个组件所使用的接口与其它组件提供的接口连接在一起,进行导通。每个应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所有组件导通起来,形成一个有机整体。 TinyOS应用程序必须包含Main 组件,Main组件是首先被执行的一个组件。确切的说,在TinyOS 中执行的第一个命令是Main.StdControl.init(),接下来是Main.StdControl.start()。 Main组件完成以下功能:芯片初始化,外围电路初始化,操作系统调度数据结构初始化,子组件初始化,启动子组件件,进入调度死循环从而将控制权交给操作系统,一旦没有任务可以调度就进入休眠状态以降低系统功耗。 TinyOS的调度系统是TinyOS系统的核心部分。它采用先进先出的排队策略,任务之间不可以抢占,但是中断可以抢占任务,中断是否可以抢占中断则是应用程序自己控制的。即如果中断处理程序进入中断以后执行了关中断的操作,那么这个中断将是不可抢占的,否则在服务的过程中就有可能被抢占掉。另外还要注意,在中断服务程序里面是可以创建任务的。 1.2在Cygwin下的安装 在/etc/bash.bashrc文件中增加以下内容: export TOSROOT=/opt/tinyos-2.x export TOSDIR=$TOSROOT/tos export CLASSPATH=C:\cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar export CLASSPATH="$CLASSPATH;." export MAKERULES=$TOSROOT/support/make/Makerules export PATH=/opt/msp430/bin:/opt/jflashmm:$PATH 安装以下软件包: rpm -ivh --ignoreos c:/downloads/avr-binutils-2.17tinyos-3.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avr-gcc-4.1.2-1.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avr-libc-1.4.7-1.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avarice-2.4-1.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avr-insight-6.3-1.cygwin.i386.rpm

cygwin安装

Cygwin的安装。 我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是: https://www.360docs.net/doc/0218730687.html,/ 或者直接使用下载连接来下载安装程序,下载连接是: https://www.360docs.net/doc/0218730687.html,/setup.exe 下载完成后,运行setup.exe程序,出现安装画面。直接点“下一步”,出现安装模式的对话框,如下图所示: 我们看到有三种安装模式: ?Install from Internet,这种模式直接从Internet安装,适合网速较快的情况; ?Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装; ?Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin。 从上述三种模式中选择适合你的安装模式,这里我们选择第一种安装模式,直接从网上安装,当然在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装。选中后,点击“下一步”,

这一步选择Cygwin的安装目录,以及一些参数的设置。默认的安装位置是C:\cygwin\,你也可以选择自己的安装目录,然后选择“下一步”, 这一步我们可以选择安装过程中从网上下载的Cygwin组件包的保存位置,选择完以后,点击“下一步”,

这一步选择连接的方式,选择你的连接方式,然后点击下一步,会出现选择下载站点的对话框,如下图所示, 在这一步,需要注意,为了获得最快的下载速度,我们首先在列表中寻找Cygwin中国镜像的地址:https://www.360docs.net/doc/0218730687.html,,如果找到就选中这个地址;如果找不到这个地址,就在下面手动输

自己汇总的cygwin基本使用方法,

Cygwin是一个用于在Windows上模拟Linux环境的软件。 通过cygwin,可以在windows环境下使用linux的程序,像find、tar等一些工具也可以在windows下使用,让我们可以更方便的管理文件。 一、cygwin下的一些常见问题: 1、常见问题说明; a、盘符问题; cygwin命令行中,“/cygdrive/c”等同于“C:\”。 b、更改cygwin默认路径; 新建一个环境变量“HOME”,变量值即为你想要的cygwin打开时的默认路径(例如设为“/cygdrive/d”)。 c、cygwin warning:MS-DOS style path detected: 环境变量中加入“CYGWIN=nodosfilewarning”。 2、常用的一些命令; pwd 显示当前的路径 cygpath -dm "`pwd`" 显示当前的完整路径(即windows格式的路径) cd 改变当前路径,无参数时进入对应用户的home目录 ls 列出当前目录下的文件。此命令有N多参数,比如ls -al ps 列出当前系统进程 kill 杀死某个进程 mkdir 建立目录 rmdir 删除目录 rm 删除文件 mv 文件改名或目录改名 man 联机帮助 less 显示文件的最末几行 ——————————————————————— ls #以默认方式显示当前目录文件列表 ls –a #显示所有文件包括隐藏文件 ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ls –color=never *.so > obj #不显示文字颜色,将所有so文件记录到obj文件中 ——————————————————————— cd dir #切换到当前目录下的dir目录//如切到d盘cd d: cd .. #切换到到上一级目录 cd ../.. #切换到上二级目录 cd ~ #切换到用户目录,比如是root用户,则切换到/root下 ——————————————————————— rm file #删除某一个文件

14-Cygwin+Android NDK的安装

Cygwin+Android NDK的安装 本文档为刘长冬的毕业论文实验系统环境搭建说明书的子部分—Cywin+Android NDK的安装文档。本文档详细描述了Cywin+Android NDK安装的方法和过程,为实验系统下一步的设计和开发提供必要的依据。 1.软件的来源 1.1.Cygwin Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。Cygwin移植工作在Windows NT、Windows 2000、Windows XP以及Windows Server 2003上比较好,在Windows 95和Windows 98上,相对差劲一些。目前Cygwin由Red Hat等负责维护。 Cygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB),这样可以进行简单的软件开发;还有一些UNIX系统下的常见程序。2001年,新增了X Window System。 另外还有一个名为MinGW的库,可以跟Windows本地的MSVCRT库(Windows API)一起工作。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对POSIX规范的实现没有Cygwin库完备。 但糟糕的是,Cygwin不支持Unicode。实际上,除了当前Windows系统以及OEM codepages(例如,一个俄语用户,他的codepages是CP1251和CP866,而不能是KOI8-R、ISO/IEC 8859-5、UTF-8等),Cygwin对其他字符集都不支持。 Red Hat规定,Cygwin库遵守GNU General Public License,但也可以跟符合开源定义的自由软件链接。Red Hat另有价格不菲的许可协议,这样使用Cygwin库的专属软件,就可以进行再发布。 官方网站地址为: https://www.360docs.net/doc/0218730687.html,/

cygwin常用快捷键总结

Cygwin 总结: 1.Cygwin窗口中进外盘用cd /cygdrive/f 而dos中则直接用d:等 2.Cygwin中需要安装什么工具直接不卸载重新装工具包 https://www.360docs.net/doc/0218730687.html,/uid-15070602-id-2779056.html 3.Cygwin快捷键 # Ctrl-U: 擦除一行光标前面的部分。 # Ctrl-H: 擦除光标前面的一个字符。 # Ctrl-D: 终止输入。(退出shell,如果您正在使用shell 的话)。 # Ctrl-C: 终止当前正在运行的程序。 # Ctrl-Z: 暂停程序。 &'') # Ctrl-S: 停止向屏幕输出。 # Ctrl-Q: 重新激活向屏幕输出。 默认的shell,`bash’,有历史编辑和tab 补齐功能。 # up-arrow: 开始历史命令搜索。 # Ctrl-R: 开始增量历史命令搜索,可以按照关键字查查自己用过哪些命令。# TAB: 完整的把文件名输入到命令行。 # Ctrl-V TAB: 输入TAB 而不是扩展命令行。 # Ctrl + P - 上一条命令 # Ctrl + N - 下一条命令 # Ctrl-U: 擦除一行光标前面的部分。 # Ctrl + Y - 粘贴前一Ctrl+U类命令删除的字符,是粘贴不是撤销啊!

下面的应用可能稍稍高级一点点 # !! - 上一条命令 # !-n - 倒数第N条历史命令 # !-n:p - 打印上一条命令(不执行) # !?string?- 最新一条含有“string”的命令 # !-n:gs/str1/str2/ - 将倒数第N条命令的str1替换为str2,并执行(若不加g,则仅替换第一个) 其他一些有用的按键组合。 Ctrl-Alt-Del:挂起或者重新启动系统,这三个按键在Linux下可以轻松地修改成关机的操作,这对于单用户的朋友还是很方便的 # Ctrl + l - 清屏 # Ctrl + A - 光标移到行首 # Ctrl + E - 光标移到行尾 # Ctrl + W - 清除光标之前一个单词 # Ctrl + K - 清除光标到行尾的字符 # Ctrl + T - 交换光标前两个字符 # Ctrl + V - 输入控制字符如Ctrl+v ,会输入^M # Ctrl + F - 光标后移一个字符 # Ctrl + B - 光标前移一个字符 # Ctrl + H - 删除光标前一个字符 # N++F - 光标后移N个单词,N为1时可省略 # N++B - 光标前移N个单词,N为1时可省略 # Left-click-and-drag mouse: 选择并且拷贝到剪贴板。 # Click middle mouse button: 使用剪贴板的内容粘贴。 # Meta-key (Emacs terminology) 传统的是使用Left-Alt-key 4.Cygwin中文乱码vim语法高亮ls颜色显示 打开cygwin作如下配置 1.在任何位置执行vi ~/.bashrc 并在行尾添加如下内容并保存关闭 export LESSCHARSET=latin1 alias less='/bin/less -r' alias ls='/bin/ls -F --color=tty --show-control-chars' export LC_ALL=zh_CN.GBK export LC_CTYPE=zh_CN.GBK export LANG=zh_CN.GBK export OUTPUT_CHARSET="GBK" 2.在任何位置执行vi ~/.inputrc 并在行尾添加如下内容并保存关闭 set meta-flag on set input-meta on set convert-meta off set output-meta on

Cygwin使用指南

Cygwin使用指南 下载: 1. 下载、运行安装向导文件 一开始的下载方法,了解Cygwin的人都知道:就是到: https://www.360docs.net/doc/0218730687.html, 中先当个安装向导文件setup.exe,这个是Cygwin的官方下载安装向导文件,而且也只能通过它才能正确下载最新的Cygwin版本(为何?稍后有说明)。 setup.exe下载完毕,双击运行,程序安装向导界面如下图所示: 点击“下一步”继续,准备选择Cygwin的安装方式。 2. 选择安装方式 如上图所示,一共有三种安装方式: (1)Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。 (2)Download Without Installing:只是将安装文件下载到本地,但暂时不安装。 (3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。 强烈建议选择第(2)项,以便于能够手工指定安装路径。然后再点击”下一步“。 3. 设置安装文件的本地存储路径 由于我们选择的是直接下载的安装方式,所以必需指定好一个本地下载文件存储目录。安装目录所在的驱动器剩余空间必须足够(若要完全下载,至少需要600M以上的空间)。设置好后,点击“下一步”。 4. 选择连接方式

如上图所示,共有三种连接方式选择: (1)Direct Connection:直接连接。 (2)Use IE5 Settings:使用IE的连接参数设置进行连接。 (3)Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址和端口号)。 用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后再点击“下一步”。 5. 选择下载站点 经过一番搜索,安装向导为我们列出了众多可用的下载镜像站点以供选择,有HTTP的也有FTP的。说实话,这些站点我几乎都试过了一遍,真正能用的能给我留下深刻印象的寥寥无几。这里我只推荐一个站点:https://www.360docs.net/doc/0218730687.html,,又快又稳定。用户也可以自由决定倒底用哪个站点进行下载。另外,几个后辍为“.jp”的站点也还过的去,但不推荐。为啥?因为那是小日本的站点。 言归正传,选择好了没?好,点击“下一步”,向导会显示下图所示的信息: 注意!这并不是正式的下载,而只是安装向导从下载镜像站点上获取压缩过的安装列表文件。这个安装列表文件是Cygwin统一指定的,并随着新版本的发布而更新。安装向导就是通过它来得知究竟可以下载什么不能下载什么。并且该下载列表文件中还有包含有每个下载文件的MD5验证码,非常重要。 6. 选择所要下载/安装的安装包内容 安装列表文件下载完毕,向导会显示列表中的内容,供用户自由选择倒底需要下载哪些安装包。如何选择呢?只需用鼠标点击每个安装包名后面那个循环箭头图标即可:图标后面的文字是表示究竟对该安装包采取何种下载/安装方式,并随着点击而不断变化,共有这么几类:

Cygwin + OpenSSH FOR Windows的安装配置

在windows操作系统中,使用Cygwin + OpenSSH开源软件来作为远程连接的安全工具,是一个非常好的方法,得到许多网管人员的青睐。然而要想顺利安装配置好这套软件,对于初学者来说,是有一定难度的。为了使同道们少走弯路,特将本人摸索的经验陈列于此,以供需要者参考。建议在安装配置这套软件之前,最好要初步掌握一些Linux终端操作技能及其技术概念。 以下所述是在Windows XP系统中实践完成,其它Windows系统可参照此文实施。 一、安装Cygwin + OpenSSH 首先打开https://www.360docs.net/doc/0218730687.html,网页,点击如下链接: 将会下载一个安装Cygwin的setup.exe文件,然后在欲安装Cygwin + OpenSSH软件的磁盘上创建Cygwin目录,在此我们假定为:C:"Cygwin,运行setup.exe后打开图一: 图一 图一主要提供关于Cygwin软件安装的一些信息,点击下一步后打开图二:

图二 图二提供了三个选项: 第一选项:从Internet上下载并安装所需软件。 第二选项:从Internet上下载所需软件安装包到本地磁盘。 第三选项:从本地磁盘安装包的目录中安装所需软件。 此处选择从Internet上下载并安装所需软件,点击下一步后打开图三: 图三 图三为指定软件安装的目标路径,其它按图上默认的选项选择。点击下一步后打开图四: 图四 图四为指定软件安装包的本地存放路径。点击下一步后打开图五:

图五 图五是选择连接Internet的方式,照图点选Use IE5 Settings,点击下一步后打开图六: 图六 图六是选择下载Cygwin的网站,尽量选离我国近的网站,以提高安装速度。点下一步打开图七:

cygwin常用命令

基本操作命令: ---------------------------------------------------------------------- ---------------------------------------------------------------------- ls #以默认方式显示当前目录文件列表 ls –a #显示所有文件包括隐藏文件 ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ls --color=never *.so > obj #不显示文字颜色,将所有so文件记录到obj文件中 ---------------------------------------------------------------------- cd dir #切换到当前目录下的dir目录 cd / #切换到根目录 cd .. #切换到到上一级目录 cd ../.. #切换到上二级目录 cd ~ #切换到用户目录,比如是root用户,则切换到/root下 ---------------------------------------------------------------------- rm file #删除某一个文件 rm -fr dir #删除当前目录下叫dir的整个目录 ---------------------------------------------------------------------- cp source target #将文件source 复制为target cp /root/source . #将/root下的文件source复制到当前目录 cp –av soure_dir target_dir #将整个目录复制,两目录完全一样 cp –fr source_dir target_dir #将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同 ---------------------------------------------------------------------- mv source target #将文件source更名为target ---------------------------------------------------------------------- diff dir1 dir2 #比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出 diff file1 file2 #比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的

Windows下通过cygwin架设sshd服务

sshd服务是一种安全连接,它能让你访问服务器上的命令行界面。Windows本身没有提供该服务,所以我们可以通过cygwin来进行安装。 安装 cygwin 首先安装 cygwin。安装时间为 2006-10-8,Cygwin DLL版本为 1.5.21-1。除了默认的软件包之外,又增加了以下软件包。 ?Admin o cron-3.0.1-19 o cygrunsrv-1.17-1 o shutdown-1.7-1 o syslog-ng-1.6.11-1 ?Archive o unzip-5.50-5 o zip-2.3-6 ?Devel o subversion-1.3.2-1 ?Editors: o vim-7.0.076-1 ?Interpreters o gawk-3.1.5-4 o perl-5.8.7-5 o expat-1.95.8-1 ?Libs ?Net o lftp-3.5.1-1 o openssh-4.4p1-1 o openssl-0.98d-1 o openssl097-0.9.7l-1 o ping-1.0-1 o netcat-1.10-2 ?Shells o ash-20040127-3 o bsah-3.1-9 o bash-completion-20060301-1 o mc-4.6.1-2 ?Utils o patch-2.5.8-8 o time-1.7-1 ?Web o wget-1.10.2-1

安装 用管理员用户登录,启动 cygwin 命令行,执行以下命令。 $ ssh-host-config Generating /etc/ssh_host_key Generating /etc/ssh_host_rsa_key Generating /etc/ssh_host_dsa_key Generating /etc/ssh_config file Privilege separation is set to yes by default since OpenSSH 3.3. However, this requires a non-privileged account called 'sshd'. For more info on privilege separation read /usr/doc/openssh/README.privsep. Shall privilege separation be used? (yes/no) yes Warning: The following function requires administrator privileges! Shall this script create a local user 'sshd' on this machine? (yes/no) yes Generating /etc/sshd_config file Added ssh to /cygdrive/c/WINDOWS/system32/drivers/etc/services Do you want to install sshd as service? (Say "no" if it's already installed as service) (yes/no) yes Which value should the environment variable CYGWIN have when sshd starts? It's recommended to set at least "ntsec" to be able to change user context without password. Default is "ntsec". CYGWIN=binmode ntsec tty The service has been installed under LocalSystem account. To start the service, call `net start sshd' or `cygrunsrc -S ssdh'. Host configuration finished. Have fun! 配置 sshd 在 cygwin 的命令行中输入以下命令: $ cd /etc $ chmod 666 sshd_config $ vi sshd_config 修改 sshd_config 的以下配置。

cygwin安装卸载

cygwin安装卸载 不会安装linux系统,不会配置工作环境是不能想象的。(事实上,确实要了解很多东西的原理,不然很难排错:诸如,硬盘引导器的引导原理、分区结构原理及linux分区结构和文件系统、环境变量的设置、种类繁多的压缩包安装包的解压安装方法、用户管理权限管理等常用命令、以至于驱动安装系统中文化等等异常琐碎的东东)。 一、cygwin是什么? cygwin是一个在windows平台上运行的 linux模拟环境,因为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实现的更详细描述,请参考https://www.360docs.net/doc/0218730687.html,/cygwin-ug-net/highlights.html 二、cygwin的安装。 step1. 下载后,点击安装文件(setup.exe)进行安装, step2. 安装模式有"Install from Internet"、"Download form Internet"、"Install from Local Directory" 三种. step3. 接下来是选择安装目的路径和安装源文件所在的路径,之后就进入了选择安装包所在的路径。 + All Default + Admin Default .... 如上图所示,在某个节点上双击,就可以改变它的状态,如Default、Install、Uninstall、Reinstall四种状态。默认的都是Default状态,很多工具的默认状态都是不安装。在这里选择了在All这一行上后面的Default上点Install,全部安装,以免后患。 step4. 点下一步,安装成功。它会自动在你的桌面上建立一个快捷方式。 三.cygwin卸载 具体步骤如下:

新手在Windows上运行Linux的命令操作方法

新手在Windows上运行Linux的命令操作方法 在windows上可以运行或使用Linux下面的命令吗?可以,小编今天就来分享怎么样让Windows支持Linux命令,做这些安装和设置后,就可以非常方便的在windows系统中使用Linux下面的命令了,对于Linux初学者来说,这个是在windows下练习Linux命令的非常好方法。 首先我们要安装CygwinPortable工具,可以百度搜索下载,也可以在小编的百度云网盘中下载: https://www.360docs.net/doc/0218730687.html,/share/link?shareid=3522233410&uk=4278685087#di r/path=%2FTools 若是下载小编百度云网盘中的,安装方法非常简单,加压缩后,双击CygwinPortable.exe就可以安装了,如下图所示: CygwinPortable工具的默认安装位置是C:\CygwinPortable,打开下面这个目录,并复制下面的路径信息备用: C:\CygwinPortable\App\Cygwin\bin

在我的电脑上面点右键,然后在弹出菜单中选择最下面的“属性”,之后会打开关于“系统”的设置项 点击左边列表中的“高级系统设置”,打开“系统属性”设置对话框,然后在这里我们点击右下方的“环境变量”按钮,打开“环境变量”查看修改对话框

在“环境变量”设置对话框的“系统变量”中找到Path,然后点击下面的“编辑”按钮,我们要把C:\CygwinPortable\App\Cygwin\bin的路径天道到Path中 在打开的“编辑系统变量”中,点击变量值后面的内容,定位到最后,首选输入分号“;”,然后添加C:\CygwinPortable\App\Cygwin\bin,最后依次点击各个确定按钮,完成设置

cygwin安装与启动

1.下载、运行安装向导文件 https://www.360docs.net/doc/0218730687.html, 中先当个安装向导文件setup.exe,这个是Cygwin的官方下载安装向导文件,而且也只能通过它才能正确下载最新的Cygwin版本(cygwin 中文网的setup.exe 不能用)。 setup.exe下载完毕,双击运行,程序安装向导界面如下图所示: 点击“下一步” 继续,准备选择Cygwin的安装方式。 2. 选择安装方式

如上图所示,一共有三种安装方式: (1)Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。 (2)Download Without Installing:只是将安装文件下载到本地,但暂时不安装。 (3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。 建议选择第(2)项,以便于能够手工指定安装路径。然后再点击”下一步“。 3. 设置下载文件的本地存储路径

由于我们选择的是直接下载的安装方式,所以必需指定好一个本地下载文件存储目录。安装目录所在的驱动器剩余空间必须足够(若要完全下载,至少需要900M以上的空间)。设置好后,点击“下一步”。 4. 选择连接方式 如上图所示,共有三种连接方式选择: (1)Direct Connection:直接连接。

(2)Use IE5 Settings:使用IE的连接参数设置进行连接。 (3)Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址和端口号)。 用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后再点击“下一步”。 5. 选择下载站点 我用的是:https://www.360docs.net/doc/0218730687.html,,快得时候可以到180KB/S,单是我的网速是2Mbps,所以不知道上限是多少。 点击“下一步”,向导会显示下图所示的信息: 注意!这并不是正式的下载,而只是安装向导从下载镜像站点上获取压缩过的安装列表

Cygwin+Eclipse搭建Hadoop开发环境

Cygwin的安装 1.先在https://www.360docs.net/doc/0218730687.html,/install.html上下载安装文件打开后双击setup.exe安装。如下图: 2. 直接点击下一步后如下图: 图中有三个选项,意思一看就懂啊。这里直选择下一步3.直接点击下一步后如下图:

这里是要选择安装路径,设置在哪里都可以。没有特殊要求。 4. 设置好路径后下一步进入下图: 这是设置Cygwin安装文件的目录。先安装的exe只是个引导它需要自己下载安装文件。设置这个目录就是存储这些文件的。 5.设置好后下一步进入下图:

这里是你网络的链接方式,第一个是直接链接,第二个是使用IE代理,第三个使用你指定的HTTP/FTP代理。你要根据你自己的情况选择。通常选第一个如不好使则查看你的联网是否使用了代理用了就选下面两个中的一个。 6.设置好后下一步进入下图: 选择其中一个url用作下载的站点。我选第一就行挺快的。你的不行可以试试别的。也可以在下面的User URL中添加url写完地址一点Add就加入到上面的url列表中了。然后选择你自己加入的url即可。如果自己加入可以尝试一下这个url:https://www.360docs.net/doc/0218730687.html,/pub/。然后点击下一步进行安装文件的下载,需要点时间。如果点击下一步后出现这个错误Internal Error: gcrypt library error 60 illegal tag。就是上一步网络选择的问题或者选择的url不能下载。自己可以尝试改动一下。

正常下载的话也可能出现一个警告窗口如下图: 点击确定即可。随即会进入下图。 7. 来到此图就要开始进行一些配置了。选择一下要安装的包。如下图: 首先:选择其中的Base Default,通常这里的包都已经选择上了。你要确保sed已选择上,这样你可以在eclipse中使用hadoop了。如下图这样即可:

Cygwin+gcc构建Windows下类Unix开发平台(1)

Eclipse+Cygwin+gcc构建Windows下类Unix开发平台 https://www.360docs.net/doc/0218730687.html,/thread-1265089-1-1.html 这两天突发奇想,Eclipse的CDT能够构建C开发平台,Cygwin可以模拟Unix环境,为什么不结合使用,构建一个在Windows下开发Unix程序的IDE平台呢? 说干就干,立刻上网查了一些资料,确实已经有很多人已经有过一些研究。感谢前人的栽树,让我有好大的阴凉,哈哈。不过在实践过程中,还是发现有一些需要注意的地方,为防止大家也走这些弯路,我把自己的一些经验总结一下,以飨大家。 首先,下载Cygwin环境,可以在https://www.360docs.net/doc/0218730687.html,下载最新的版本,不过网上好像都是提供的网络安装版。下载之后,执行安装,注意到选择安装部件的时候,选择开发包的安装,如下图所示: 装完之后,设置一下环境变量,把Cygwin的bin目录加到Path环境变量中。至此,Cygwin已经安装完毕。然后,安装CDT插件,可以直接在Eclipse网站上下载单独的Eclipse CDT套装,也可以直接下载CDT插件安装到原有的Eclipse目录下,需要注意的是CDT版本和Eclipse版本必须对应,否则加载插件不成功(没试过,或许也有兼容性,不过Eclipse网站上提示需要版本对应)。 CDT插件安装完之后,能够在Eclipse的Preferences上看到C/C++的配置,这表明,安装插件成功。 现在,已经可以在Eclipse里面开发C/C++项目了,神奇吧。 下面讲几个有用的经验。 1、 自己编写makefile文件 CDT把很多操作都搞得比较自动化,默认情况下,它会自动生成两个目标目录,Debug和Release,在这两个目录下,都会生成相应的makefile文件。比较恼火的是,你没有办法改它,修改完之后,又会恢复成原来的内容。 实际上,只需要把下面这个Generate Makefile automatically 的check打勾去掉,我们就可以自由的修改makefile了。 2、 如何在makefile中加载动态库 很多实际的工作不可能像Hello World这么简单,有很多工程我们都需要加载一些其他的库文件,比如操作Oracle数据库,我们需要链接oci库,在unix上,我们用-lclntsh,VC工程中用oci.dll,那么Cygwin中怎么使用呢? 这时候,就需要一个工具pexports,用它来做一些辅助操作,使得Windows下的Dll能够为Cygwin的Gcc 使用。 Pexports下载地址https://www.360docs.net/doc/0218730687.html,/software/cygwin/pexports-0.43/moron1.html 使用下面方法处理dll文件 $ pexports.exe filename.dll > filename.def $ dlltool.exe --dllname filename.dll --def filename.def --output-lib libfilename.a 3、 如何进行调试 调试实际上非常简单,直接用eclipse的Debug As,选择Local C/C++ Application。但是,可能会提示找不到代码。这时候,你只需要做一件事情,目录映射。 在Prefrences窗口中找到C/C++的Debug配置,有一个Common Source Lookup Path 增加一个类型为Path Mapping的设置,

CYGWIN 安装教程

我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是: https://www.360docs.net/doc/0218730687.html,/ 或者直接使用下载连接来下载安装程序,下载连接是: https://www.360docs.net/doc/0218730687.html,/setup.exe 下载完成后,运行setup.exe程序,出现安装画面。直接点“下一步”,出现安装模式的对话框,如下图所示: 我们看到有三种安装模式: ?Install from Internet,这种模式直接从Internet安装,适合网速较快的情况; ?Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装; ?Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin。 从上述三种模式中选择适合你的安装模式,这里我们选择第一种安装模式,直接从网上安装,当然在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装。选中后,点击“下一步”,

这一步选择Cygwin的安装目录,以及一些参数的设置。默认的安装位置是C:\cygwin\,你也可以选择自己的安装目录,然后选择“下一步”, 这一步我们可以选择安装过程中从网上下载的Cygwin组件包的保存位置,选择完以后,点击“下一步”,

这一步选择连接的方式,选择你的连接方式,然后点击下一步,会出现选择下载站点的对话框,如下图所示, 在这一步,需要注意,为了获得最快的下载速度,我们首先在列表中寻找Cygwin中国镜像的地址:https://www.360docs.net/doc/0218730687.html,,如果找到就选中这个地址;如果找不到这个地址,就在下面手动输

Cygwin下用crosstool-ng 编译交叉工具链的常见错误及解决办法

Cygwin下用crosstool-ng 编译交叉工具链的常见错误及解决办法2011-02-28 21:22 1、配置crosstool-ng产生的错误 1.1 ncurses headers files were not found Checking for 'ncurses/ncurses.h'... no Checking for 'ncurses/curses.h'... no Checking for 'ncurses.h'... no Checking for 'curses.h'... no ncurses headers files were not found 解决方法: 安装:ncurses,、libncurses-devel 1.2 flex none found Checking for 'flex'... No flex: none found Either you are missing entirely the needed tool, or the version you have is too old. configure: Bailing out... 解决方法: 安装:flex,flexdll 1.3 automake 1.10 or above was not found Checking for 'automake'... no automake 1.10 or above was not found Either you are missing entirely the needed tool,

or the version you have is too old. configure: Bailing out... 解决方法: 安装:automake 1.4 libtool 1.5.26 or above was not found Checking for 'libtool'... no libtool 1.5.26 or above was not found Either you are missing entirely the needed tool, or the version you have is too old. You can give the path to this tool using: --with-libtool=PATH configure: Bailing out... 解决方法: 安装:libtool 注: 在配置crosstool-NG时,出现的类似“XXX:none found”的错误,都可以是该工具没有安装,把该工具安装上,重新配置即可。 1.5 ct-ng help命令检查时出错 crosstool-ng 安装成功后,用ct-ng help命令检查时,不认识该命令这多半是添加环境变量失败造成的,这时可以打开 /home/Administrator 目录下的.bashrc查看是否把windows里的其他环境变量添加到了.bashrc文件中,如果把多余的去掉,只保留cgywin自己的环境变量,如下所示: PATH=/usr/local/bin:/usr/bin:/bin:/opt/crosstool-ng-1.9.3/bin 1.6 配置时的其他错误 在配置crosstool-NG时,也即执行 ./configure --prefix=/opt/crosstool-ng 出现的类似“XXX:none found”的错误,都是相应工具没有安装造成的,重新运行setup.exe把该工具安装上,再执行该命令,即可。

相关主题
相关文档
最新文档