目录

cygwin 之 unix 模拟环境

前言

有时候想利用 linux 的资源开发 windows 软件,或者是利用 linux 的资源(工具)帮忙我们在 windows 系统上完成某项工作(尤其是使用 gnu 工具集在 windows 上进行嵌入式系统开发是非常有用的!)。使用 Cygwin 是非常好的选择,它由 cygnus solutions 公司开发的自由软件,其集成绝大部分的 linux 软件包,只需使用 Cygwin 安装程序(实则是资源管理器)安装(添加)对应软件包即可。

安装

1、到 Cygwin 官网下载:

软件简介
Cygwin 是一个在 windows 平台上运行的类 unix 模拟环境,是一个 windows 软件;在其编译及运行的软件也是.exewindows 软件,而非 linux 软件(例如:gccgcc.exe的 windows 软件!);甚至对系统的操作也是对 windows 操作(例如:reboot命令,是重启 windwons 系统!)。简单说:包括 cygwin 以及在其里面运行的软件都是 windows 软件,它只是模拟在 linux 中运行。
特别说明
1、注意:Cygwin 环境中编译构建的软件在运行时必须依赖cygwin1.dll,如果制作独立软件建议用 MinGW-w64/TDM-GCC 工具链来编译构建软件;
2、关于:CygwinMinGW 都是为用户提供在 windows 操作系统使用 GNU 工具的方法,使得原是 linux 写的 c 源代码可以在 windows 上编译及运行(exe 执行文件)。Cygwin 大而全面,提供完整的类 Unix 环境;而 MinGW 小而高效,其主要是编译器,一般只支持编译使用 C/C++ 标准库的程序。
3、补充:UnxUtils 也是 Windows 下的 Unix Linux 工具集,其集成了 Unix 系统的很多命令,下载解压并把它 usr/local/wbin 文件夹的绝对路径加到 windows 环境变量即可使用。
下载网址
Cygwin 官网下载:http://www.cygwin.com

../img/20220227_01_11.jpg

2、点安装程序直接安装:

关于 Cygwin 安装程序(setup-x86_64.exe),更准确说是 Cygwin 软件资源管理器,其主要工作是安装/删除/升级相关软件包。例如:发现wget不存在,按照初次在线安装一样的流程安装,当到软件包安装界面时,选择full全列表并在搜索框输入wget选择对应软件包进行安装。

  • 安装工作分两部分
    1、安装 Cygwin 程序(设置安装路径);
    2、下载+安装软件包(设置下载缓存路径)。
  • 安装方式则分三种
    1、在线安装(实质就是 2 和 3)。
    2、下载离线软件包,
    3、安装离线软件包。

../img/20220227_01_21.jpg
../img/20220227_01_22.jpg
../img/20220227_01_23.jpg
../img/20220227_01_24.jpg
../img/20220227_01_25.jpg

3、常用工具所需软件包:

下面列出一些常用的工具软件包,可以在软件包安装界面进行勾选安装。当需要安装很多软件包时,手工勾选显得繁琐且低效,这时我们可以使用apt-cyg命令工具来安装(后面章节会介绍这个命令安装及使用)。

软件/工具
所需软件包
常用 wget, curl, gawk, openssh, nc, bzip2, xz, tar, unzip, lua, dos2unix
gcc gcc-core, gcc-g++, binutils, gdb, make, cmake, libgccpp1
待续… 待续……

使用

1、Cygwin 里查看系统信息:
1
2
3
4
5
6
7
8
# 查看系统信息、软件包
cygcheck -h        #帮助
cygcheck -s        #查看系统信息(包括已装软件包等)
cygcheck -l        #列出[已装软件包]所有文件路径
cygcheck -c        #列出[已装软件包]版本信息
cygcheck -c cygwin #查看[cygwin]版本信息
cygcheck -p vim    #从[cygwin.com]网上查询[vim]软件包
cygcheck /bin/gcc  #检查[gcc]可执行文件依赖于哪些库(相当于Linux下的ldd命令)
2、Cygwin 里安装 hugo 案例:

Hugo 是一个博客生成工具,本节以安装 Hugo 作为示例,介绍 Cygwin 的基础操作(可同时打开《博客生成工具 Hugo》的『Hugo 的安装』章节对比一下两者的区别)。Hugo 官方为我们编译好各种平台二进制文件,安装时不需要安装任何依赖软件,直接下载使用即可。特别说明:我们要下载的 hugo 是 windows 版本,非 linux 版本,文件为hugo_0.92.2_Windows-64bit.zip。在 windows 的桌面双击Cygwin64 Terminal运行 Cygwin 的 unix 模拟环境的终端机,之后与 linux 环境下一样使用命令进行相关操作:

1
2
3
4
5
wget https://github.com/gohugoio/hugo/releases/download/v0.92.2/hugo_0.92.2_Windows-64bit.zip #在命令窗口直接下载hugo(下载建议的extended版本)
unzip -q hugo_0.92.2_Windows-64bit.zip #解压到当前文件夹
mv hugo.exe /usr/local/bin/  #将hugo移到本地应用程序目录
vi /etc/profile              #编辑系统环境变量,在文件最后加入内容:export PATH=$PATH:/usr/local/bin (备注:实际是系统默认路径,可以不加)
hugo version                 #查看版本,验证安装是否成功(建议重新打开 Cygwin 再运行命令查看)

../img/20220227_02_01.jpg

扩展

1、apt-cyg 工具安装以及使用:

用惯 Ubuntu 就知道,使用apt-get install/remove命令非常方便安装/卸载软件(常用于批量操作),那么 Cygwin 是否有类似命令?当然有的,那就是apt-cyg第三方工具,需要手工安装,以及事前须要安装依赖包:bash wget tar gawk bzip2 xz。其中 bash、tar、gawk 属于 Base 类,在安装最小系统时已包含;而 wget、bzip2、xz 属于 Archive 类,需要通过 Cygwin 安装程序先装上,确保后续运行 apt-cyg 不出错。

1.1、安装依赖包wget tar gawk bzip2
这些依赖包的安装方法按照前面的【安装】章节操作即可,或者说在前面【安装】章节已把这些依赖软件包安装了。

1.2、下载 apt-cyg 并且添加到 Cygwin:

../img/20220227_03_01.jpg
../img/20220227_03_02.jpg

1.3、验证apt-cyg安装是否成功有效:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
apt-cyg install vim  #在 Cygwin 中使用`apt-cyg`命令安装 vim,用于验证`apt-cyg`是否安装成功

#【补充一】可能用到的命令:
apt-cyg --help       #查看帮忙
apt-cyg mirror       #查看镜像源地址
apt-cyg mirror http://mirrors.163.com/cygwin  #设置(修改)镜像源地址

#【补充二】使用 apt-cyg 安装常用工具:
apt-cyg install python python-crypto #安装python环境
apt-cyg install util-linux           #安装util-linux包(包含more/col/whereis等命令):
apt-cyg install inetutils            #安装telnet/ftp工具
apt-cyg install man cygwin-doc
apt-cyg install vim screen wget subversion \
        openssh pwgen gzip bzip2 curl rsync \
        bash-completion lftp nc tree p7zip \
        connect-proxy util-linux bind-utils inetutils

../img/20220227_03_03.jpg

2、windows 调用 Cygwin 工具:

其实 windows 的 cmd 命令窗口可以直接使用 Cygwin 相关软件包工具,方法很简单:只需把软件包所在路径加入系统环境变量里即可。这里不得不说一下 Windows 下的 Unix Linux 工具集 UnxUtils,其集成了 Unix 系统的很多命令,下载解压并把它 usr/local/wbin 文件夹的绝对路径加到 windows 环境变量即可使用

2.1、添加 windows 系统环境变量:

1
2
3
4
5
6
# 共加三个路径到 windows 环境变量,
# D:\cygwin64\bin
# D:\cygwin64\sbin
# D:\cygwin64\usr\local\bin
# 要求使用 ; 分隔各个变量,具体如下:
;D:\cygwin64\bin;D:\cygwin64\sbin;D:\cygwin64\usr\local\bin

../img/20220227_03_04.jpg

2.2、验证 cmd 命令窗调用 linux 命令:

../img/20220227_03_05.jpg