Cygwin:windows下的Linux系统
Cygwin是啥?Cygwin是一个可原生运行于Windows系统上的POSXI兼容环境。
是的,我又开新专辑了《零基础swoole学习笔记》。不是我太贪心,而是最近半年和小伙伴一直在用swoole开发,踩了些坑,为了让这些坑发挥余热,所以就有了这个专辑。
坊间一直流(zheng)传(lun)“PHP誉为最好的编程语言,而Swoole让PHP成为了最好的编程语言”,足以说明swoole对php的重要性。
PHP的优势是简单、开发效率高,可以快速实现产品功能。而作为一个动态脚本语言并不是为计算密集的场景设计的,所以在面对服务端的高并发、IO密集型场景时就有点心有余而力不足。
这时候Swoole诞生了,它使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询,内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。而随着Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。
Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。
Swoole是服务端的框架,运行在Linux环境中,“工欲善其事,必先利其器”本专辑开篇的重点就是怎样在Windows系统上搭建好Linux的开发环境(Mac用户自行忽略)。
-·- 全文结构 -·-**
- Cygwin是什么
- 1、Cygwin是什么
- *
1.1、从软件角度理解系统
计算机世界里存在各种各样的操作系统,目前通用操作系统有主流的三大类:
- UNIX,通用操作系统鼻祖,发展出特别多衍生系统;
- Windows,微软家根基,桌面市场霸主;
- GNU/Linux,UNIX近亲,有各种发行版如Ubuntu、CentOS等。
这些系统有各自的内核,出于系统稳定性考虑是不允许用户程序直接操作内核,同时也将内核开发和应用软件开发隔离开来,系统将必要的函数封装成库供应用软件调用,约定的规范即为应用软件接口(Application Program Interface,API)。
API函数库是连接用户软件和系统内核桥梁,或者是“协议”,操作系统厂商写好函数库说明书,应用软件开发者不必关心其内部是如何实现的,用的时候对照着API手册查询就够了。
有了封装库的中间层,系统逐渐被划分为多层。硬件基础之上堆叠了系统内核、系统函数库等中间层,在应用程序内部还可以继续细分多个层次,这样把最终用户与硬件隔离开来,增强了抽象能力、屏蔽底层细节,也让开发者分工,专注于各自层次的开发,同时降低了软件迁移的难度。
1.2、Cygwin的组成
先辈David Wheeler大神曾经说过:“All problems in computer science can be solved by another level of indirection(计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决)”。
为了让各个系统之间的API统一,IEEE牵头制定POSIX标准。POSIX标准主要就是针对UNIX API而制订,不管函数如何包装、功能如何实现,但API按照标准约定来。目前Linux及Windows都部分兼容了POSIX标准。
而Cygwin的作用就是在Windows中增加一个中间层——兼容POSIX的模拟层,并在此基础上构建了大量Linux-like的软件工具。
Cygwin将cygwin1.dll、函数库、应用程序等文件按照UNIX/Linux的目录树架构进行组织存放,如/bin、/usr、/lib、/etc、/var、/home等等都存在于Cygwin安装路径下,用户从终端登陆进Cygwin的shell后,就可以像在UNIX/Linux系统那样使用相同的命令、工具。
- 2、Cygwin的优缺点
- *
- 2.1、Cygwin的优势
在Windows开发Linux,常用的方法是安装Linux系统或者虚拟机,而有了Cygwin免去了这些麻烦。
首先它相对系统或者虚拟机安装及卸载方便,Cygwin提供了包管理工具,可按需安装/卸载软件包,一个能运行起来的最小Cygwin系统只需要几十Mb。
而且Cygwin做到了源码级的兼容性,GNU、UNIX、Linux软件的源代码几乎不用修改就可以在Cygwin环境中编译构建成功。
另外,Cygwin的程序运行与Windows互不干扰,高效的命令行工具与Windows图形界面各有所长、形成互补。
Cygwin把Windows的磁盘挂载到/cygdrive下,如c盘就是/cygdrive/c、d盘就是/cygdrive/d,Cygwin中的应用程序可以读写Windows磁盘中的文件,Windows应用程序也可以读写Cygwin目录中的文件(但要注意不要把文件搞乱了)
Cygwin的shell中可以启动Windows程序,Windows的cmd中也可以启动Cygwin的程序,但由于字符编码不同可能造成乱码;多一套可用的API,对于Windows开发者,程序代码既可以调用Win32 API,又可以调用Cygwin API,甚至混合。
- 2.2、Cygwin的劣势
“吹嘘”了这么多优点,Cygwin也有一定的缺点,不过对于非系统级别的开发人员来讲,基本上可以忽略。
一是由于是在Win32系统之上模拟实现POSIX兼容层,应用程序在底层就多了一个层级的函数调用,效率比UNIX/Linux系统上原生的应用程序肯定低,不过这也是在效率和兼容性之间选择的一个平衡。
另外Cygwin未实现二进制文件级别的兼容,Cygwin系统上的应用程序编译后仍然是Windows PE格式的可执行文件,UNIX/Linux系统上的二进制可执行文件在Cygwin上不能运行。
与Windows互操作不足,Windows原生程序并不能利用cygwin1.dll提供的与UNIX/Linux兼容的信号、pty设备等,除非改写程序代码重新编译,但这样新的程序就依赖于cygwin1.dll,就不是“Windows原生程序”了。
- 2.3、Cygwin的应用场景
常见的应用场景包括但不限于:
(1)Shell命令行使用
Shell是UNIX/Linux的精华所在,骨灰级玩家可以做到不用鼠标只敲命令完成所有工作,用户最常用的大量命令在Cygwin下均可照常使用,在UNIX/Linux编写的脚本也可以几乎不加修改地在Cygwin下运行。
(2)交叉编译构建环境搭建
Cygwin环境中已移植好了gcc等开发工具,大量的交叉工具链(如arm-none-gnu-eabi-gcc、arm-none-gnu-eabi-binutils)也可以在Cygwin中制作,就算只有Windows原生版本的,Cygwin shell中也能调用,那么利用Cygwin就能搭建起交叉编译构建环境。
(3)程序移植
把符合POSIX标准的程序移植到Windows下,还有更多正在由个人、社区、商业公司、研究机构不断贡献的开源自由软件,造福广大Windows用户,利用已有的GNU、UNIX、Linux软件会使程序移植越来越容易。
(4)兼用POSIX API和Win32 API开发
有的开发者可能对UNIX/Linux和Win32的API都熟悉,两套API也各有其优点,在Cygwin下开发者自己可以任意选取、混合使用。
- 3、本地安装Cygwin
- *
- 3.1、安装Cygwin
1、进入Cygwin官方地址(http://www.cygwin.com/),下载安装包(我也为小伙伴准备了安装包,点击文末原文链接,提取码:8q2a)。
2、点击安装文件,进行安装,点击下一步。
3、根据实际情况,选择本地安装目录及下载的文件存放目录,按照过程中为下载一些文件,存放在指定目录后,以便下次安装时可以直接从该目录读取。
4、选择“direct connection” ,点击下一步,填写镜像源。我安装的时候用的是阿里云的镜像源(http://mirrors.aliyun.com/cyg...),其他开源镜像站地址如下:
网易 http://mirrors.163.com/cygwin/
阿里巴巴 https://mirrors.aliyun.com/cy...
华为 https://mirrors.huaweicloud.c...
清华 https://mirrors.tuna.tsinghua...
中科大 http://mirrors.ustc.edu.cn/cy...
华中科大 http://mirror.hust.edu.cn/cyg...
东软 http://mirrors.neusoft.edu.cn...
5、链接成功后,进行下一步,选择要安装的依赖包。Swoole开发环境下需要安装的依赖包有:autoconf-archive;djgpp-gcc-objc;djgpp-gcc-objc++;gcc-objc;gcc-objc++;gdb;libc++-devel;libpcre-devel;libpcre2-devel;php;php-bz2;php-curl;php-devel;php-gd;php-json;php-mbsrtring;php-mysqli;php-pdo_mysql;php-phar;php-sockets
5、点击下一步安装,剩余的就是自动安装,在结束时可能需要勾选两个框,是图标和快捷键的创建,自行选择勾选。
5、点击桌面图标,运行命令:cygcheck -c cygwin,可查看安装的版本情况。
- 3.1、扩容Cygwin可用内存空间
1、电脑快捷键Win+R打开电脑运行,运行:regedit,打开注册表,选择HKEY_LOCAL_MACHINE -> SOFTWARE -> Cygwin 新建Cygwin的QWORD(32位请选择DWORD)
2、名称位heap_chunk_in_mb,数值位2048MB(可自行选择,不要太小,最好1G以上,也要看windows系统内存大小),重启电脑完成。
到此就完成了
Cygwin:windows下的Linux系统的更多相关文章
- 惊艳的cygwin——Windows下的Linux命令行环境的配置和使用
http://www.tuicool.com/articles/2MramqI 时间 2014-07-29 09:28:36 点滴之间 聚沙成金 原文 http://www.path8.net/t ...
- windows下远程访问Linux系统中mysql
1,查询MySQL数据库是否允许远程ip访问,命令如下: sql语句: use mysql; select host, user from user; 查询结果为127.0.0.1或者localhos ...
- windows下取linux系统里面的文件
方法一:使用原生态的psftp 1.下载psftp.exe http://pan.baidu.com/s/1boVLHKF 2.双击psftp.exe 2.1 输入指令:open IP地址 (例如:o ...
- Windows下的Linux系统
强调!!!必须是Windows专业版!!! 一.安装运行过程 第一步:打开开发人员模式 第二步:进入 '控制面板 '--'程序'--'启用的Windows功能'--勾选Linux子系统(根据提示进行重 ...
- windows下删除Linux
在Windows下删除Linux系统的方法(附修复MBR的工具下载) 我的电脑安装了双系统,Windows和Linux,不过由于Linux在最近一段时间内不会使用,所以我打算删除Linux. 删除 ...
- Windows系统下远程Linux系统
Windows系统下远程Linux系统 工具:Xmanager 启动界面: 配置保存路径(win7): C:\Users\Administrator\AppData\Roaming\NetSarang ...
- 如何在Windows环境下安装Linux系统虚拟机
如何在Windows环境下安装Linux系统虚拟机 本篇经验写给想要入门学习C语言的小白们.Windows系统因为使用窗口图形化,操作简单,功能多样,所以我们在Windows环境下可以做到很多,但想要 ...
- gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)
cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...
- Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序
自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH 网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...
- Xming + PuTTY 在Windows下远程Linux主机
Xming + PuTTY 在Windows下远程Linux主机 一.原理 Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与 ...
随机推荐
- opencv colors
""" 在利用python进行画图时,我们可能常常用的颜色就是'k'黑色,'r'红色,'b'蓝色,'g'绿色等,这些颜色分别代表常见的 几种颜色.但是当我们画图比较多时, ...
- Google – Reviews
前言 继上一篇 Facebook – Reviews (Graph API) 后, 这篇继续介绍另一个 Reviews 大平台 Google Reviews. 想通过 API 获取 Google Re ...
- CSS – Variables
参考: Youtube – CSS Variables - CSS vs Sass - variables inside media queries Why we prefer CSS Custom ...
- CSS & JS Effect – Image Overlay
介绍 一张背景图, 一行写字, 一层黑影 (Image Overlay), 如果没有做黑影, 字的颜色容易和图片撞, contrast 就会很烂. HTML 结构 <div class=&quo ...
- POJ-2385 Apple Catching(基础dp)
It is a little known fact that cows love apples. Farmer John has two apple trees (which are convenie ...
- AD域下,环境下办公机系统时间不准确
事件起因: 某部门一同事电脑时间和AD域控时间相差3分钟,虽然说时间相差5分钟内问题不大,但是本着有问题就解决的原则,还是花了点时间去查资料解决. (小小吐槽一下,在我看来域控机是掌管下面所有的办公机 ...
- Nacos 开启鉴权设置
Nacos 开启鉴权设置 # 开启鉴权 nacos.core.auth.enabled=true nacos.core.auth.system.type=nacos # 开启鉴权之后,你可以自定义用于 ...
- 基于AIOps实现智慧园区极简IT运维
随着物联网.云平台.大数据.人工智能等技术的发展,并逐步投入到智慧园区的建设,传统园区数字化转型加快.园区的形式包括产业园区.教育园区.制造业园区.科研园区.社区等等,园区形态不断演进和发展,园区网承 ...
- Linux安装miniforge
miniforge 安装 协议条款:bsd-3-clause 支持conda和mamba命令,两者效果一样,推荐使用mamba # Setup Miniforge wget "https:/ ...
- Flutter将视频或图文分享到抖音
如何在 Flutter 中分享视频到抖音 话不多说,先上效果: 原理 发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com) 本教程没有接入抖音原生 SDK 以及 ...