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、从软件角度理解系统

计算机世界里存在各种各样的操作系统,目前通用操作系统有主流的三大类:

  1. UNIX,通用操作系统鼻祖,发展出特别多衍生系统;
  2. Windows,微软家根基,桌面市场霸主;
  3. 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系统的更多相关文章

  1. 惊艳的cygwin——Windows下的Linux命令行环境的配置和使用

    http://www.tuicool.com/articles/2MramqI 时间 2014-07-29 09:28:36  点滴之间 聚沙成金 原文  http://www.path8.net/t ...

  2. windows下远程访问Linux系统中mysql

    1,查询MySQL数据库是否允许远程ip访问,命令如下: sql语句: use mysql; select host, user from user; 查询结果为127.0.0.1或者localhos ...

  3. windows下取linux系统里面的文件

    方法一:使用原生态的psftp 1.下载psftp.exe http://pan.baidu.com/s/1boVLHKF 2.双击psftp.exe 2.1 输入指令:open IP地址 (例如:o ...

  4. Windows下的Linux系统

    强调!!!必须是Windows专业版!!! 一.安装运行过程 第一步:打开开发人员模式 第二步:进入 '控制面板 '--'程序'--'启用的Windows功能'--勾选Linux子系统(根据提示进行重 ...

  5. windows下删除Linux

    在Windows下删除Linux系统的方法(附修复MBR的工具下载) 我的电脑安装了双系统,Windows和Linux,不过由于Linux在最近一段时间内不会使用,所以我打算删除Linux.   删除 ...

  6. Windows系统下远程Linux系统

    Windows系统下远程Linux系统 工具:Xmanager 启动界面: 配置保存路径(win7): C:\Users\Administrator\AppData\Roaming\NetSarang ...

  7. 如何在Windows环境下安装Linux系统虚拟机

    如何在Windows环境下安装Linux系统虚拟机 本篇经验写给想要入门学习C语言的小白们.Windows系统因为使用窗口图形化,操作简单,功能多样,所以我们在Windows环境下可以做到很多,但想要 ...

  8. gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

    cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...

  9. Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序

    自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH  网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...

  10. Xming + PuTTY 在Windows下远程Linux主机

    Xming + PuTTY 在Windows下远程Linux主机 一.原理     Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与 ...

随机推荐

  1. C语言浮点数转字符串实现函数

    C语言浮点数转字符串可用库函数sprintf,此处为编写的简单函数. 小数部分最多显示六位. pOut:输出字符串缓冲区 f:浮点数值 isize:输出字符串缓冲区大小 char * Funftoa( ...

  2. 【YashanDB知识库】YashanDB 开机自启

    [问题分类] YashanDB 开机自启 [关键字] 开机自启,依赖包 [问题描述] 数据库所在服务器重启后只拉起monit.yasom.yasom进程,缺少yasdb进程: [问题原因分析] 数据库 ...

  3. RestoreFormer++: Towards Real-World Blind Face Restoration from Undegraded Key-Value Pairs(IEEE,2023,8)

    RestoreFormer++: Towards Real-World Blind Face Restoration from Undegraded Key-Value Pairs(IEEE,2023 ...

  4. 在stable diffussion中完美修复AI图片

    无论您的提示和模型有多好,一次性获得完美图像的情况很少见. 修复小缺陷的不可或缺的方法是图像修复(inpainting).在这篇文章中,我将通过一些基本示例来介绍如何使用图像修复来修复缺陷. 需要的软 ...

  5. MySQL存储引擎:InnoDB与MyISAM

    InnoDB和MyISAM是MySQL数据库中两种常用的存储引擎,它们在数据存储结构.事务支持.锁的支持.外键支持.性能等方面存在显著的差异.下面将详细介绍这两种存储引擎的特点和优势. 什么是存储引擎 ...

  6. ES 去重/聚合查询

    es 安装版本为 7.14.0 springboot 有默认的版本,防止冲突设置如下 <properties> <java.version>1.8</java.versi ...

  7. vsphere8.0 VCenter部署

    一.vCenter Server 介绍 vCenter Server是VMware提供的一种集中管理平台,用于管理和监控虚拟化环境中的虚拟机.主机.存储和网络等资源.它提供了一套功能强大的工具和界面, ...

  8. 云原生周刊:K8s 的 13 个最佳开源监控工具

    开源项目推荐 Silver Surfer 该项目旨在检查 Kubernetes 对象的 API 版本兼容性,并为其提供迁移路径,以便为集群升级做好准备. Actions Runner Controll ...

  9. Vue 实现 PDF 导出功能

    旨在通过 html2canvas 和 jspdf,先将页面的 html 转成 canvas,再将 canvas 转成 pdf,同时解决了分页截断的问题. 安装依赖 yarn add html2canv ...

  10. 开源之夏 2023|欢迎报名 Apache RocketMQ 社区项目!

    开源之夏是由中科院软件所"开源软件供应链点亮计划"发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬 ...