Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目

一、简介

Cygwin 是一个在 Windows 操作系统上提供类似于 Unix/Linux 环境的兼容层的开源项目。它为 Windows 用户提供了一种在 Windows 平台上运行类 Unix 程序的方式。
Cygwin 提供了一组工具和库,包括一个动态链接库(cygwin1.dll)和一个用于安装和管理软件包的包管理器。通过安装 Cygwin,用户可以在 Windows 上使用许多常见的开源软件,如 Bash shell、GCC 编译器、Emacs 文本编辑器等。
Cygwin 通过将 Windows API 转换为类 Unix API 的方式实现了对 Unix/Linux 兼容性的支持。这意味着用户可以在 Cygwin 环境中运行许多原本为 Unix/Linux 设计的程序,而无需进行大量的修改。
Cygwin 提供了一个终端仿真器,可以在其中运行命令行程序。用户可以通过命令行界面使用 Cygwin 提供的工具和命令,也可以编写和运行自己的脚本。
总之,Cygwin 提供了一种在 Windows 上获得类 Unix/Linux 环境的方式,使用户能够在 Windows 平台上使用许多常见的开源工具和软件。
官网:https://www.cygwin.com/
Cygwin的优点:

  1. 广泛的软件包支持:Cygwin提供了广泛的软件包支持,几乎可以找到大部分常见的开发工具和库。
  2. 更好的Windows集成性:Cygwin提供了更好的Windows集成性,可以直接访问Windows文件系统和系统资源。
  3. 更高的兼容性:Cygwin提供了更高的兼容性,可以运行更多的Unix/Linux软件。
    Cygwin的缺点:
  4. 安装和配置复杂:Cygwin的安装和配置相对复杂,需要选择和安装大量的软件包。
  5. 较大的系统开销:Cygwin需要较多的系统资源,并且在运行时可能会有一定的性能开销。
二、安装
  1. 访问官网下载安装包:https://www.cygwin.com/,下载后双击.exe文件,开始安装
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第1张图片
  2. 选择安装方式
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第2张图片
  3. 选择安装目录
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第3张图片
  4. 选择软件包保存位置
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第4张图片
  5. 选择连接的方式
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第5张图片
  6. 选择下载站点,不同的镜像存放了不同的包,为了获得最快的下载速度,阿里云镜像:http://mirrors.aliyun.com/cygwin/,网易开源镜像:http://mirrors.163.com/cygwin/ 。
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第6张图片
  7. 选择需要下载安装的组件包:binutil、gcc-core、gcc-g++、gdb、make、cmake、mingw63-i686-gcc-core、mingw63-i686-gcc-g++、libgccpp1、procps-ng、tcl、pkg-config
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第7张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第8张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第9张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第10张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第11张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第12张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第13张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第14张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第15张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第16张图片
  8. 点击下一步,等待安装完成
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第17张图片
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第18张图片
  9. 安装完成,创建开始菜单
    Cygwin一个在 Windows 操作系统上提供类似于Unix、Linux 环境的兼容层项目_第19张图片
  10. 运行桌面程序,输入一下命令,验证是否安装成功
    cygcheck -c cygwin
    gcc --version
    g++ --version
    gdb --version
    make --version
    
三、Cygwin命令
  1. cygcheck -c 是检查所有安装的软件的版本号
  2. cygcheck -c cygwin 就是当前Cygwin的版本号。
  3. gcc --version 查看gcc版本
  4. gdb -version 查看gdb版本
  5. g++ --version 查看g++ 版本
  6. pwd 显示当前的路径
  7. cygpath -dm “pwd” 显示当前的完整路径(即windows格式的路径)
  8. cd 改变当前路径,无参数时进入对应用户的home目录
  9. ls 列出当前目录下的文件。此命令有N多参数,比如ls -al
  10. ps 列出当前系统进程
  11. kill 杀死某个进程
  12. mkdir 建立目录
  13. rmdir 删除目录
  14. rm 删除文件
  15. mv 文件改名或目录改名
  16. man 联机帮助
  17. less 显示文件的最末几行
  18. ls 以默认方式显示当前目录文件列表
  19. ls –a 显示所有文件包括隐藏文件
  20. ls –l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行
  21. ls –color=never *.so > obj 不显示文字颜色,将所有so文件记录到obj文件中
  22. cd dir 切换到当前目录下的dir目录
  23. cd … 切换到到上一级目录
  24. cd …/… 切换到上二级目录
  25. cd ~ 切换到用户目录,比如是root用户,则切换到/root下
  26. rm file 删除某一个文件
  27. rm -fr dir 删除当前目录下叫dir的整个目录
  28. cp source target 将文件source 复制为 target
  29. cp /root/source . 将/root下的文件source复制到当前目录
  30. cp –av soure_dir target_dir 将整个目录复制,两目录完全一样
  31. cp –fr source_dir target_dir 将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同
  32. kill 杀死某个进程
  33. mkdir 建立目录
  34. rmdir 删除目录
四、Cygwin之find命令说明
  1. find命令形式:find pathname -options [-print -exec -ok …]
    '''find命令的参数'''
    pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print:find命令将匹配的文件输出到标准输出。
    -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } ";,注意{   }和";之间的空格。
    -ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
    '''find命令选项'''
    -name:按照文件名查找文件。
    -perm:按照文件权限来查找文件。
    -prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
    -user:按照文件属主来查找文件。
    -group:按照文件所属的组来查找文件。
    -mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
    -nogroup:查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
    -nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
    -newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件。
    -size n:[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计。
    -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
    -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
    -mount:在查找文件时不跨越文件系统mount点。
    -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
    -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
    -amin n:查找系统中最后N分钟访问的文件
    -atime n:查找系统中最后n*24小时访问的文件
    -cmin n:查找系统中最后N分钟被改变文件状态的文件
    -ctime n:查找系统中最后n*24小时被改变文件状态的文件
    -mmin n:查找系统中最后N分钟被改变文件数据的文件
    
五、gcc命令

gcc 是 GNU Compiler Collection(GNU 编译器集合)的缩写,是一个常用的开源编译器。它支持多种编程语言,包括 C、C++、Objective-C、Fortran、Ada 等。gcc 命令用于将源代码文件编译成可执行文件或目标文件。它可以处理多个源文件,并根据文件的扩展名自动选择适当的编译器进行编译,版本不同命令可能有所区别,可查看官网:
1.编译选项

  • -c:只编译源文件,生成目标文件而不进行链接。
  • -o :指定输出文件名。
  • -I :添加头文件搜索路径。
  • -D:定义宏。
  • -S:生成汇编代码文件
  • -Wall:显示所有警告信息。
  • -Werror:将警告视为错误。
  • -std=:指定所使用的 C 或 C++ 标准。
    gcc file.c            // 编译 C 源文件为可执行文件,默认输出为 a.out
    gcc file.c -o output  // 指定输出文件名为 output
    gcc file.cpp          // 编译 C++ 源文件为可执行文件,默认输出为 a.out
    gcc -c file.c         // 编译源文件为目标文件,不进行链接
    gcc -S file.c         // 生成汇编代码文件
    gcc file1.o file2.o   // 将目标文件链接为可执行文件,默认输出为 a.out
    gcc file1.o file2.o -o output  // 指定输出文件名为 output
    
  1. 预处理选项
  • -E:只进行预处理,生成预处理后的源代码。
  • -D:定义宏。
  • -I :添加头文件搜索路径。
    gcc -E file.c         // 只进行预处理,生成预处理后的源文件
    
  1. 链接选项
  • -l:链接使用的库。
  • -L :添加库文件搜索路径。
  • -static:静态链接所有库。
    gcc -l library        // 链接指定的库文件
    gcc -L path           // 指定库文件搜索路径
    
  1. 调试选项
  • -g:生成调试信息。
  • -O0:禁用优化。
  • -ggdb:生成 GDB 调试信息。
    gcc -g file.c         // 生成可供调试的可执行文件
    
  1. 优化选项
  • -O1, -O2, -O3:不同级别的优化。
  • -Os:针对代码大小进行优化。
  • -Ofast:启用所有的优化选项,包括非标准的优化。
    gcc -O2 file.c        // 使用优化级别 2 进行编译
    
  1. 其他选项
  • -Wl,:将 传递给链接器。
  • -M:生成目标文件和依赖关系的规则。
  • -pthread:链接 POSIX 线程库。
    gcc -Wall             // 开启所有警告信息
    gcc -std=c99          // 指定 C 语言标准为 C99
    gcc -std=c++11        // 指定 C++ 语言标准为 C++11
    

你可能感兴趣的:(服务器与系统,windows,unix,linux)