嵌入式Linux应用
|
|
GTK工具集,可以开发出像GIMP一样界面功能的软件,非常成熟
|
|
KDE所使用的工具体,能开发出类似windows界面的应用,有嵌入式版
|
|
著名的Mozilla浏览器,支持与IE相差不远,而且有些功能是IE没用的
|
|
用于编写GTK的界面,非常方便,用Glade画完图然后填入空函数即可
|
|
c/c++ IDE环境,可直接编译,跟踪程序
|
|
项目管理、代码阅读工具,使得代码的阅读及修改变得非常方便
|
Kdevelop
|
c/c++ IDE开发环境,带有大量的开发文档,是Linux下的MSDN
|
|
著名的web服务程序,历史悠久,使用者无数
|
|
一种中小型数据库,速度快具免费,是Linux下的首选数据库
|
|
web脚本语言,比ASP、CGI等快得多也好用得多,非常流行
|
|
可提供Ftp文件服务,功能强且效率高
|
|
邮件服务程序,支持巨大数量的用户,功能强大且稳定
|
|
众多Linux游戏及Linux游戏新闻
|
|
Linux桌面主题,KDE、GNOME、ICEWM,GTK等等什么的主题都有
|
|
古代著名的代码调试跟踪工具,但IDE一般得调用它才能调试跟踪
|
|
Linux对Java的支持,有桌面和嵌入式的版本
|
Linux论坛
|
国外Linux论坛
|
|
|
|
|
国内Linux论坛
|
|
|
|
|
|
|
|
|
|
|
|
|
Linux开发中的常用命令
基本操作命令:
----------------------------------------------------------------------
----------------------------------------------------------------------
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的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的
comm file1 file2 #比较文件,显示两个文件不相同的内容
----------------------------------------------------------------------
echo message #显示一串字符
echo "message message2" #显示不连续的字符串
cat:
cat file #显示文件的内容,和DOS的type相同
cat file | more #显示文件的内容并传输到more程序实现分页显示,使用命令less file可实现相同的功能
more #分页命令,一般通过管道将内容传给它,如ls | more
----------------------------------------------------------------------
export LC_ALL=zh_CN.GB2312 #将环境变量LC_ALL的值设为zh_CN.GB2312
export DISPLAY=0:0 #通过该设置,当前字符终端下运行的图形程序可直接运行于Xserver
date #显示当前日期时间
date -s 20:30:30 #设置系统时间为20:30:30
date -s 2002-3-5 #设置系统时期为2003-3-5
clock –r #对系统Bios中读取时间参数
clock –w #将系统时间(如由date设置的时间)写入Bios
----------------------------------------------------------------------
eject #umout掉CDROM并将光碟弹出,但cdrom不能处于busy的状态,否则无效
----------------------------------------------------------------------
du #计算当前目录的容量
du -sm /root #计算/root目录的容量并以M为单位
find -name /path file #在/path目录下查找看是否有文件file
grep -ir “chars” #在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,-r为下一级目录
----------------------------------------------------------------------
vi file #编辑文件file
vi 原基本使用及命令:
输入命令的方式为先按ctrl+c, 然后输入:x(退出),:x!(退出并保存) :w(写入文件),:w!(不询问方式写入文件), :r file(读文件file) ,:%s/oldchars/newchars/g(将所有字串oldchars换成newchars) 这一类的命令进行操作
----------------------------------------------------------------------
man ls #读取关于ls命令的帮助
man ls | grep color #读取关于ls命令的帮助并通过grep程序在其中查找color字串
----------------------------------------------------------------------
startx #运行Linux图形有环境
Xfree86 #只运行X图形server
----------------------------------------------------------------------
reboot #重新启动计算机
halt #关闭计算机
init 0 #关闭所有应用程序和服务,进入纯净的操作环境
init 1 #重新启动应用及服务
init 6 #重新启动计算机
----------------------------------------------------------------------
扩展命令
----------------------------------------------------------------------
----------------------------------------------------------------------
tar xfzv file.tgz #将文件file.tgz解压
tar xfzv file.tgz -C target_path #将文件file.tgz解压到target_path目录下
tar cfzv file.tgz source_path #将文件source_path压缩为file.tgz
tar c directory > directory.tar #将目录directory打包成不压缩的directory.tar
gzip directory.tar #将覆盖原文件生成压缩的 directory.tar.gz
gunzip directory.tar.gz #覆盖原文件解压生成不压缩的 directory.tar。
tar xf directory.tar #可将不压缩的文件解包
----------------------------------------------------------------------
dmesg #显示kernle启动及驱动装载信息
uname #显示操作系统的类型
uname -R #显示操作系统内核的version
----------------------------------------------------------------------
strings file 显示file文件中的ASCII字符内容
----------------------------------------------------------------------
rpm -ihv program.rpm #安装程序program并显示安装进程
rpm2targz program.rpm program.tgz #将rpm格式的文件转换成tarball格式
----------------------------------------------------------------------
su root #切换到超级用户
sulogin /dev/tty4 #在tty4即alt+F4终端等待用户登陆或直接登陆开启一个shell
chmod a+x file #将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bash file才能执行
chmod 666 file #将文件file设置为可读写
chown user /dir #将/dir目录设置为user所有
----------------------------------------------------------------------
mknod /dev/hda1 b 3 1 #创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区
mknod /dev/tty1 c 4 1 #创建字符设备tty1,主设备号为4,众设备号为1,即第一个tty终端
----------------------------------------------------------------------
touch /tmp/running #在/tmp下创建一个临时文件running,重新启动后消失
----------------------------------------------------------------------
sleep 9 #系统挂起9秒钟的时间
----------------------------------------------------------------------
lpd stop 或 cups stop #停止打印服务程序
lpd start 或 cups start #启动打印服务程序
lpd restart 或 cups restart #重新启动打印服务程序
lpr file.txt #打印文件file.txt
----------------------------------------------------------------------
fdisk /dev/hda #就像执行了dos的fdisk一样
cfdisk /dev/hda #比fdisk界面稍为友好些
mount -t ext2 /dev/hda1 /mnt #把/dev/hda1装载到 /mnt目录
df #显示文件系统装载的相关信息
mount -t iso9660 /dev/cdrom /mnt/cdrom #将光驱加载到/mnt/cdrom目录
mount-t smb //192.168.1.5/sharedir /mnt -o username=tomlinux,password=tomlinux #将windows的的共享目录加载到/mnt/smb目录,用户名及密码均为tomlinux
mount -t nfs 192.168.1.1:/sharedir /mnt #将nfs服务的共享目录sharedir加载到/mnt/nfs目录
umount /mnt #将/mnt目录卸载,/mnt目录必须处于空闲状态
umount /dev/hda1 #将/dev/hda1设备卸载,设备必须处于空亲状态
sync #将cache中的内容与磁盘同步,在Linux中复制文件,一般要系统空闲才去写文件
e2fsck /dev/hda1 #检查/dev/hda1是否有文件系统错误,提示修复方式
e2fsck -p /dev/hda1#检查/dev/hda1是否有错误,如果有则自动修复
e2fsck -y /dev/hda1#检查错误,所有提问均于yes方式执行
e2fsck -c /dev/hda1#检查磁盘是否有坏区
mkfs /dev/hda1 #格式化/dev/hda1为ext2格式
mkfs.minix /dev/hda1 #格式化/dev/hda1为minix格式文件系统
mfks /dev/hda9 #格工化/dev/hda9为Linux swap格式
swapon /dev/hda9 #将swap分区装载当作内存来用
swapoff /dev/hda9 #将swap分区卸载
----------------------------------------------------------------------
lilo #运行lilo程序,程序自动查找/etc/lilo.conf并按该配置生效
lilo -C /root/lilo.conf #lilo程序按/root/lilo.conf配置生效
grub #在Linux shell状态下运行boot loader设置程序
grub-install #安装grub磁盘引导程序,成功后升级内核无须像lilo一样要重新启动系统,只需修改/etc/grub.conf即可实现新引导配置
rdev bzImage #显示kernel的根分区信息
rdev bzImage /dev/hda1 #将kernel的根分区设置为/dev/hda1,这在没有lilo等引导程序的系统中非常重要.
----------------------------------------------------------------------
dd if=/dev/fd0 of=floppy.fd #将软盘的内容复制成一个镜像,功能与旧石器时代常用的hd-copy相同
dd if=/dev/zero of=root.ram bs=1024,count=1024 #生成一个大小为1M的块设备,可以把它当作硬盘的一个分区来用
mkfs root.ram #将块设备格式化为ext2格式
dd if=root.ram of=/dev/ram0 #将init.rd格式的root.ram的内容导入内存
mount /dev/ram0 /mnt #ramdisk /dev/ram0装载到/mnt 目录
----------------------------------------------------------------------
gcc hello.c #将hello.c编译成名为a.out二进制执行文件
gcc hello.c -o hello #将hello.c编译成名为hello的二进制执行文件
gcc -static -o hello hello.c #将hello.c编译成名为hello的二进制静态执行文件
ldd program #显示程序所使用了哪些库
objcopy -S program #将程序中的符号表及无用的调试信息去掉,可以小很多
----------------------------------------------------------------------
strace netscape #跟踪程序netscape的执行,看调用的库,环境变量设置,配置文件,使用的设备,调用的其它应用程序等,在strace下,程序干了什么东东一目了然。
ps #显示当前系统进程信息
ps –ef #显示系统所有进程信息
kill -9 500 #将进程编号为500的程序干掉
killall -9 netscape #将所有名字为netscape的程序杀死,kill不是万能的,对僵死的程序则无效。
top #显示系统进程的活动情况,按占CPU资源百分比来分
free #显示系统内存及swap使用情况
time program #在program程序结束后,将计算出program运行所使用的时间
----------------------------------------------------------------------
chroot . #将根目录切换至当前目录,调试新系统时使用
chroot /tomlinux #将根目录切换至/tomlinux目录
chroot /tomlinux sbin/init #将根目录切换至/tomlinux并执行sbin/init
adduser id #增加一个叫id的用户
userdel id #增除叫id的用户
userlist #显示已登陆的用户列表
passwd id #修改用户id的密码
passwd -d root #将root用户的密码删除
chown id /work #指定/work目录为id用户所拥有
----------------------------------------------------------------------
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0
ifconfig eth0:1 192.168.1.2 #捆绑网卡1的第二个地址为192.168.1.2
ifconfig eth0:x 192.168.1.x #捆绑网卡1的第二个地址为192.168.1.x
ifconfig down eth1 #关闭第二块网卡,使其停止工作
hostname -F tomlinux.com #将主机名设置为tomlinux.com
route #显示当前路由设置情况
route add default gw 192.168.1.1 metric 1 #设置192.168.1.1为默认的路由
route del default #将默认的路由删除
dhcp #启动dhcp服务
dhclient #启动dhcp终端并自动获取IP地址
ping 163.com #测试与163.com的连接
ping 202.96.128.68 #测试与IP 202。96.128.68的连接
----------------------------------------------------------------------
probe rtl8139 #检查驱动程序rtl8139.o是否正常工作
lsmod #显示已装载的驱动程序
insmod rtl8139.o #装载驱动程序rtl8139.o
insmod sb.o io=0x280 irq=7 dma=3 dma16=7 mpu_io=330 #装载驱动程序并设置相关的irq,dma参数
rmmod rtl8139 #删除名为rtl8139的驱动模块
gpm -k #停止字符状态下的mouse服务
gpm -t ps2 #在字符状态下以ps2类型启动mouse的服务
----------------------------------------------------------------------
telnet 192.168.1.1 #登陆IP为192.168.1.1的telnet服务器
telnet iserver.com #登陆域名为iserver.com的telnet服务器
ftp 192.168.1.1 或 ftp iserver.com #登陆到ftp服务
[作者:Tomsoftware骨干之一 Linux天字一号 ]
[关于版权的声明:本着Linux自由开放的精神,Tomlinux所公开的Tomlinux文档,充许任意转载或出版,但作为对文章作者努力工作的回报,必须保留文章出处 ()及作者,Tomlinux转发文章时也将遵守这一个原则。]
L i n u x用户指南
系统管理员指南
U n i x操作系统由一个内核和一些系统程序组成。系统程序利用内核所提供的工具执行操作系统要求的各种服务程序。系统程序和其他所有的程序一起,以“用户模式”运行于内核顶部。
L i n u x内核由几个重要部件组成:进程管理、内存管理、硬件设备驱动程序、文件系统驱
动程序、网络管理和其他零碎的东西.内存管理照管已分配给进程、内核部件和缓冲区的内存区和交换空间。进程管理则创建进程,并通过在处理器上交换活动进程的方式,实施多任务操作。
在最低级上,针对每个自己支持的硬件设备,内核中都包含相应的驱动程序.
Unix系统提供的主要服务:
- init :
i n i t是每个U n i x系统中第一个启动的进程,也是内核在启动时所进行的最后一件事情
网络管理员指南
如何在在Linux 和Unix 系统下编写安全程序?
“安全程序”是指一个位于安全区域内的程序,要从不具有与该程序相同访问权限的信息源获取输入数据。这样的程序包括用来浏览远端数据的应用程序、CGI 脚本程序、网络服务器和setuid/setgid 程序。
Unix
1969-1970 年,AT&T 贝尔实验室的Kenneth Thompson、Dennis Ritchie 和其
他人开始在一台较老的PDP-7 上开发一个小型的操作系统。不久这个操作系统
被命名为Unix,是对此前一个叫做MULTICS 的操作系统项目的双关语。在
1972-1973 年,系统被重新用C 语言改写了,这是一个很有眼光的不寻常的举动:
这个决定使Unix 成为第一个可以脱离其原始硬件而存在的被广泛应用的操作系
统。其它的新方法也不断被加入Unix,一部分原因是贝尔实验室与学术界的良
好协作。1979 年,Unix 的“第七版”(V7)发布了,它是所有现存Unix 系统的
鼻祖。
从此,Unix 的历史开始变得错综复杂。由Berkeley 领导的学术界开发了被称为
Berkeley 软件发行版(BSD)的变种,而AT&T 继续在“系统III”和随后的“系统
V”的名义下开发Unix。在八十年代后期到九十年代早期,这两个主要分支间的
“战争”激化了。经过多年开发,每个变种都采用了其它变种的许多关键特性。在
商业上,系统V 赢得了“标准之战”(使其绝大部分接口进入了正式标准),而且
绝大多数硬件厂商都切换到AT&T 的系统V。但是,系统V 包含了许多BSD 的
革新,使该系统更像是两大分支的融合。BSD 分支并未消失,而是广泛应用在
研究、PC 硬件和目的单一的服务器上(例如许多WEB 站点都使用某个BSD 变
种)。
最终结果是有很多不同版本的Unix,都来源于原先的第七版。绝大多数版本的
Unix 都是私有的,由其相应的硬件厂商维护,例如,Sun 的Solaris 就是系统V
的变种。Unix 的BSD 分支中有三个版本成为开放源码软件:FreeBSD(注重在
PC 类硬件上安装简便)、NetBSD(注重于很多不同的CPU 结构)和NetBSD
的一个变种,OpenBSD(注重于安全性)
Linux
1991 年,Linus Torvalds 开始开发一个他称为“Linux”的操作系统内核[Torvalds
1999]。这个内核可以同FSF 的资料和其它软件(特别是某些BSD 软件和MIT
的X-windows 软件)结合起来构成一个可以自由修改而且非常有用的操作系统。
本文把内核本身称为“Linux 内核”,而把该完整的结合体称为“Linux”。注意,很
多人使用术语“GNU/Linux”来称呼该结合体。
在Linux 社团中,不同的组织以不同的方式结合可用软件。每一种结合被称为一
个“发行版”,而开发发行版的组织就被称为“发行商”。普通的发行版包括Red
Hat、Mandrake、SuSE、Caldera、Corel 和Debian。各种发行版间存在差异,
但所有的发行版都基于同一个基础:Linux 内核与GNU 的glibc 库。由于这两
者都是受“copyleft”类型许可证保护的,对它们的修改一般也必须提供给所有人,
这是BSD 和源于AT&T 的Unix 系统之间所不存在的统一力量,使不同Linux
发行版统一在同一个基础之上。
。计算机安全目标通常由三个总体目标来描述:
? 秘密性(也被称为秘密),意味着计算系统的内容只能被授权对象访问。
? 完整性,意味着内容只能被授权对象以被授权的方式所修改。
? 可用性,意味着内容可以被授权对象使用。该目标经常提到的反义词就是
拒绝服务。
Saltzer [1974]和Saltzer and Schroeder [1975] 列出了以下依然有效的设计安全
保护系统的原则:
? 最小特权。每个用户和程序在操作时应当使用尽可能少的特权。该原则限
制了事故、错误或攻击带来的危害。它还减少了特权程序之间潜在的相互
作用,从而使对特权无意的、没必要的或不适当的使用不太可能发生。这
种想法还可以引申到程序内部:只有程序中需要那些特权的最小部分才拥
有特权。
? 机制经济。保护系统的设计应当尽可能地简单和小。用他们的话来说,“逐
行审阅软件和对硬件进行物理检查一类的技术是实现保护机制所必需的。
这样的技术要想成功,小而简单的设计是必不可少的。”
? 公开设计。保护机制不应该依赖于攻击者的无知。其机制反而应当是公开
的,依赖于象密码或密钥这样比较少的(而且容易改变的)项目的保密。
公开设计使广泛的公开详细检查成为可能,而且还可以让用户确信所要使
用的系统是可以满足需要的。坦白地说,要保持一个广泛应用系统的秘密
是不现实的;反向编译和硬件破解能够很快暴露一个产品的任何“秘密”。
Bruce Schneier 证明了聪明的设计者应当“对任何有关安全的东西都要求
公开源码”,以及确保它受到普遍的审核,而且任何找到的问题都已得到
修正[Schneier 1999]。
? 完全中介。每一个访问企图都应该被检查;把认证机制放在不会被推翻的
位置上。例如,在客户--服务器模型中,通常服务器应该进行所有的访问
检查,因为用户可以构建或修改他们自己的客户程序。
? 安全失败的缺省值(例如,基于许可的方案)。缺省反应应当是拒绝服务,
而且保护系统能随后辨别哪种情况下访问是允许的。
? >特权分离。理想情况下,访问对象应当依赖于多个条件,这样破坏一个
保护系统并不能进行完全的访问。
? 最少的公共机制。使共享机制的数量和使用(例如,对/tmp 或/var/tmp
目录的使用)最小化。共享对象提供了信息流和无意的相互作用的潜在危
险通道。
? 心理上的接受程度/使用简便。人机界面必须设计得易于使用,这样用户
就可以按惯例自动地正确使用保护机制。如果安全机制非常符合用户对自
己保护目标的想象,错误就很少发生。
进程
在类Unix 系统上,用户级别的活动由运行的进程来实现。绝大多数Unix 系统
支持作为独立概念的“线程”;一个进程内的线程共享内存,而且系统的调度器实
际上是调度线程。Linux 的做法与此不同(依我看是做得更好):线程与进程没
有本质的差异。在Linux 下,在某个进程创建另一个进程时,它可以选择共享哪
些资源(比如内存可以共享)。随后Linux 内核会进行优化以获得线程级的速度;
参见clone(2)以了解更多信息。值得注意的是Linux 内核的开发者倾向于使用“任
务”一词,而不是“线程”或“进程”,但外界的文档则倾向于使用进程一词
在类Unix 系统中,每个进程所有的典型属性如下:
? RUID, RGID -- 运行进程的用户的真实用户ID 和组ID
? EUID, EGID -- 用于权限检查(文件系统除外)的有效用户ID 和组ID
? SUID, SGID -- 保存的用户ID 和组ID;用来支持下面要讨论的切换许可
“开和关”。不是所有的类Unix 系统都支持它。
? 补充群组 -- 用户有成员资格的群组(GID)列表。
? umask -- 在创建一个新的文件系统对象时决定缺省访问控制设置的一组
比特位;参见umask(2)。
? scheduling parameters -- 每个进程都有一个调度策略,缺省策略为
SCHED_OTHER 的进程还具有nice、priority 和counter 的附加属性。
参见sched_setscheduler(2)以了解更多信息。
? limits -- 每个进程的资源限制(参见下文)。
? filesystem root -- 进程角度的根文件系统起始处;参见see chroot(2)。
嵌入式Linux 系统的开发指南
参阅<嵌入式Linux 系统的研究及其在串口通信中的应用>
Linux 系统内核的分析:Linux 系统使用了单一内核结构,即操作系统中所
有的系统相关功能都被封装在内核中。程序通过一套称作系统调用(System Call)
的界面访问内核结构。在 Linux 中,可以动态装入和卸载内核中的部分模块。
Linux 内核由5 个 部分组成:进程管理、内存管理、文件系统管理、进程间通
信和网络接口。
开发环境的建立:
Linux 下建立交叉编译器,在Windows 操作系统中用ADS 开发工具实现启动程序,在Linux 操作系统下,用交叉编译器进行Linux 内核、库函数及应用程序的编译。
嵌入式系统中,Boot Loader 是在操作系统内核或用户应用程序运行之前运
行一段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软
硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准
备好正确的环境。大多数BootLoader 都包含2 种不同的操作模式:启动加载
(BootLoading)模式和下载(DownLoading)模式。
内核的初始化分为以下几个阶段:
(1)内核的入口stext。
stext 是BootLoader 所调用的内核入口,从stext 进入后,将完成一些针对程
序运行环境的建立。
(2)内核的初始化函数start_kernel。
start_kernel 是内核初始化的主体。在调用这个函数的时候,系统已经有了一
个初始化的页目录表和堆栈。
(3)内核的初始化线程init。
在start_kernel 中,通过创建了一个内核进程来执行init 函数,进行初始化。
(4)系统的初试化程序
编译内核需要3 个步骤,分别是创建内核依赖关系、创建内核镜像文件和创
建内核模块。命令依次为:make dep,make zImage,make modules。
编译完成以后,会生成镜像文件arch/arm/boot/zImage,把这个文件下载到开
发板上,就会看到Linux2.6 的内核启动信息,即完成了Linux2.6 内核移植的第
一步。
使用Linux 自身的配置工具,编译定制内核。根据功能对内核进行剪裁
根文件系统的作用是存放了各种工具、应用程序、init 程序、必需的库和需
要加载的模块。
ARM公司的编译工具RVCT(Realview Compilation Tools)是业界最优化的 ARM编译器。在开发基于ARM Linux的系统时,用户可以使用GNU工具编译Linux内核,而将Linux上层应用代码的编译工作交给RVCT来完成,从而享受到RVCT高效的代码强优化功能。
用户可以在Codesourcery的官方网站()下载到复合ARM ABI标准的Codesourcery GNU工具链。
Cygwin一个Linux-like environment for Windows.
Cygwin is a Linux-like environment for Windows. It consists of two parts:
? A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality.
? A collection of tools which provide Linux look and feel.
The Cygwin DLL currently works with all recent, commercially released x86 32 bit and 64 bit versions of Windows, with the exception of Windows CE.
Note that the official support for Windows 95, Windows 98, and Windows Me will be discontinued with the next major version (1.7.0) of Cygwin.
What Isn't Cygwin?
? Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.
? Cygwin is not a way to magically make native Windows apps aware of UNIX ? functionality, like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.
|
刚开始学习的同学可以先download一个安装上,然后照着usermanual来做一遍,只有70页也不是很难,关键了解一下它的原理。
|