win10 win10使用linux子系统统和cygwin有什么不同

win10 linux子系统和cygwin有什么不同? - 知乎172被浏览26043分享邀请回答5添加评论分享收藏感谢收起温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1284)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_095',
blogTitle:'cygwin,在win中开发linux程序',
blogAbstract:'从windows到Linux -- 编程篇 -- cygwin,在win中开发linux程序& 乾坤一笑[smileonce] & & & & &版权所有 转载请注明出处 &CSdn.net/smileonce\"&'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}最近发现好多人转载文章自己加了几句就挂着原创的标签,真是好玩啊。
乾坤一笑[smileonce] & & &
版权所有 转载请注明出处 http://blog.csdn.net/smileonce(不过貌似这个链接失效了)
##################################################################################
很多用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相近。 &&
以下引用网上的一段话(出处:ASPx&&http://blog.csdn.net/glock18/archive//38275.aspx),&
用于说明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-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上点Install,全部安装,以免后患。(全部安装大概不到200M的空间)
&step4. 点下一步,安装成功。它会自动在你的桌面上建立一个快捷方式。
&好了,下面就开始我的linux旅程了。双击cygwin的快捷方式进入系统。
首先介绍几个简单的linux命令。
pwd & 显示当前的路径
cd & &改变当前路径,无参数时进入对应用户的home目录
ls & &列出当前目录下的文件。此命令有N多参数,比如ls -al
ps & &列出当前系统进程
kill &杀死某个进程
mkdir 建立目录
rmdir 删除目录
rm & &删除文件
mv & &文件改名或目录改名
man & 联机帮助
less &显示文件的最末几行
由于linux下面的命令大多都有很多参数,可以组合使用。所以,每当你不会或者记不清楚改用那个参数,
那个开关的时候,可以用man来查找,比如,我想查找ls怎么使用,可以键入
系统回显信息如下:
LS(1) & & & & & & & & & & & & &FSF & & & & & & & & & & & & &LS(1)
& & & ls - list directory contents
& & & 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程序。
&进入了/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有两种模式,命令模式和插入模式。在命令模式下,所有的输入都算是命令,如果是胡乱敲打的键盘,就会声音提示。
如果在插入模式下,所有的输入都会显示出来。默认刚开始进入的是命令模式
插入模式,顾名思义就是输入编辑文本;命令模式,则是输入各种控制命令,常用的有:
& i &进入编辑模式
& ! 强调执行
有些命令是可以组合使用的,如果你修改了某个文件,想存盘退出,则可以使用wq;如果你想放弃存盘,
直接退出则可以使用q! &好了大家体验一下吧,记住:从编辑模式退回命令模式按&Esc&,再按“:”,在输入指
令,从命令模式进入编辑模式用i,初次使用vim肯定很难受,嘿嘿,不过用多了就习惯了,确实很省劲。
敲打字符‘’i‘’,就进入了插入模式。我们可以输入自己的程序了。当想要退出到命令模式时,就按esc键。如果发现输入错误了,就需要返回到命令模式,通过键盘上的h、j、k、l来上下左右移动光标,将其移动到需要修改的字符位置。
当需要插入字符时,同样先在命令模式下将光标移动到合适的字符位置,然后进行插入。切换到插入模式,可以按字母i,也可以按字母a,字母i为在光标前插入,a为光标后插入。
我们编辑hello.c文件,输入:
int main(void) {
&printf( &Hello World!&);
然后,输入wq命令退到命令行。
输入编译指令:
# gcc hello.c -o hello
编译成功后可以看一下
看到hello.exe了吧,嘿嘿。
好,让我们运行看看。
效果如何?不错吧? :)
okey,现在玩一个C++的hello world,
# vim world.cpp
void main() {
&cout && &Hello World!&;
编译C++程序要用g++
# g++ world.cpp -o world
运行一下哈,
如何,效果不错吧?诸位都是高手,走到这步应该编些简单程序都不成问题了吧:p
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13611次
排名:千里之外
原创:13篇
转载:10篇
评论:13条
(1)(1)(1)(1)(1)(1)(3)(3)(3)(3)(5)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 win10 linux子系统 的文章

 

随机推荐