Cygwin 配置C/C++编译环境以及如何编译项目

news/2024/10/22 1:17:06/

文章目录

    • 一、安装C、C++编译环境需要的包
      • 1. 选择gcc-core、gcc-g++
      • 2. 选择gdb
      • 3. 选择mingw64下的gcc-core、gcc-g++
      • 4. 选择make
      • 5. 选择cmake
      • 6. 确认更改
      • 7. 查看包安装状态
    • 二、C、C++ 项目编译示例
      • step1:解压缩sed-4.9.tar.gz
      • step2:执行./configure生成Makefile文件
      • step3:执行make命令
      • step4:执行make install命令
      • step5:执行新生成的sed命令

本文将总结基于Cygwin配置C、C++编译环境需要安装哪些包,并给出示例如何进行项目编译。
Cygwin 介绍与安装,请参考:Cygwin 介绍与安装

一、安装C、C++编译环境需要的包

重新运行setup-x86_64.exe程序,步骤与 Cygwin 介绍与安装 基本一致,
重点选择软件包,在选择软件包界面,查看类别

1. 选择gcc-core、gcc-g++

搜索gcc,在Devel分类下,分别找到gcc-coregcc-g++,在新增一栏,点击跳过,在下拉列表选择需要安装的版本;
选择gcc-core、gcc-g++

2. 选择gdb

搜索gdb,在Devel分类下,分别找到gdbe,在新增一栏,点击跳过,在下拉列表选择需要安装的版本;
选择gdb

3. 选择mingw64下的gcc-core、gcc-g++

搜索mingw64,在Devel分类下,分别找到mingw64-i686-gcc-coremingw64-i686-gcc-g++mingw64-x86_64-gcc-coremingw64-x86_64-gcc-g++新增一栏,点击跳过,在下拉列表选择需要安装的版本;
选择mingw64下的gcc-core、gcc-g++
选择x86_64的gcc-core、gcc-g++

4. 选择make

搜索make,在Devel分类下,分别找到make新增一栏,点击跳过,在下拉列表选择需要安装的版本;
选择make

5. 选择cmake

搜索cmake,在Devel分类下,分别找到cmake新增一栏,点击跳过,在下拉列表选择需要安装的版本;
选择cmake

6. 确认更改

然后确认并完成后续安装
确认更改

7. 查看包安装状态

打开Cygwin Terminal,输入下面的命令

cygcheck -c gcc-core gcc-g++ gdb mingw64-i686-gcc-core mingw64-i686-gcc-g++ mingw64-x86_64-gcc-core mingw64-x86_64-gcc-g++ make cmake

包安装验证

二、C、C++ 项目编译示例

这里就不以简单的helloworld为例了。
使用gnu下的sed项目为例
到 https://ftp.gnu.org/gnu/sed/ 下载sed源码
.tar.gz 和 .tar.xz 格式都行

.tar.gz 和 .tar.xz 只是使用的压缩算法不一样,xz 是一种非常高效的压缩算法,压缩比比 gzip 更高。因此.tar.xz 文件比.tar.gz 文件更小,但需要更长时间进行压缩和解压缩;.tar.gz 文件则具备更快的压缩和解压缩速度,但文件大小相对较大。

示例使用:https://ftp.gnu.org/gnu/sed/sed-4.9.tar.gz

说明:Cygwin 安装时,默认是安装了sed命令的,在 Cygwin安装目录的 bin目录下,这里仅是为了演示如何使用Cygwin编译C/C++项目

step1:解压缩sed-4.9.tar.gz

打开Cygwin Terminal,进入到下载的sed-4.9.tar.gz所在的目录,然后执行tar命令解压缩;

$ tar -xzf sed-4.9.tar.gz

解压缩sed源码包

step2:执行./configure生成Makefile文件

$ ./configure

执行configure脚本
生成的Makefile文件

step3:执行make命令

$ make

执行make命令

step4:执行make install命令

执行完make命令后,已经在sed目录下生成了sed.exe命令,继续执行make install命令,将新生成的sed命令,添加到/usr/local/bin路径,这样就可以在Cygwin整个环境中使用这个命令了。

$ make install

make install命令

step5:执行新生成的sed命令

$ sed --version

执行生成的sed命令
注意:

  • 需要重启Cygwin64 Terminal终端,新安装的sed命令才生效;
  • 在执行sed命令时,优先使用 usr\local\bin\sed.exe,而不是bin\sed.exe

另外需要注意的是,Cygwin编译生成的.exe可执行程序,运行时依赖cygwin1.dll等库,为了验证这点,这里将生成的sed.exe程序,复制一份到D:根目录,然后在cmd命令行窗口执行sed --version(注意不是在Cygwin Terminal执行)

在这里插入图片描述
因此,如果想要使Cygwin编译生成的.exe在脱离Cygwin Terminal终端环境也可正常运行,需要系统能找到cygwin1.dll位置,通常的做法是将Cygwin安装目录下的bin目录的绝对路径添加到系统的Path环境变量(因为Cygwin相关的dll都在这个bin目录下)


http://www.ppmy.cn/news/1033739.html

相关文章

SQL进阶--SQL的常用技巧

一、ORDER BY FIELD() 自定义排序逻辑 排序 ORDER BY 除了可以用 ASC 和 DESC,还可以通过**ORDER BY FIELD(str,str1,...)**自定义字符串/数字来实现排序。这里用 order_diy 表举例,结构以及表数据展示: 二、CASE 表达式 「case when then el…

RocketMQ 消息消费 轮询机制 PullRequestHoldService

1. 概述 先来看看 RocketMQ 消费过程中的轮询机制是啥。首先需要补充一点消费相关的前置知识。 1.1 消息消费方式 RocketMQ 支持多种消费方式,包括 Push 模式和 Pull 模式 Pull 模式:用户自己进行消息的拉取和消费进度的更新Push 模式:Broker…

【Linux】磁盘或内存 占用比较高要怎么排

当 Linux 磁盘空间满了时 请注意,在进行任何删除操作之前,请确保你知道哪些文件可以安全删除,并备份重要文件,以免意外丢失数据。当 Linux 磁盘空间满了时,可以按照以下步骤进行排查: 检查磁盘使用情况&…

服务器扩展未生效

服务器扩容未生效 在阿里云付费扩容后,在服务器里面看未生效。 阿里云->实例与镜像->实例->选择实例->云盘->扩容进入linux服务器查看: df -h vda1扩容未生效。原40g->扩容后100g 解决方法: 1、安装growpart yum inst…

item_get_desc-获得TB商品描述

一、接口参数说明: item_get_desc-获得淘宝商品描述,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_desc 名称类型必须描述keyString是调用key(点…

HTML注释也可以在JavaScript中使用

你可以在JavaScript中使用HTML注释。不仅仅是在<script>标签中:你可以在包含的独立文件中使用它们&#xff0c;甚至在Node.js和Deno中也可以使用。另一方面&#xff0c;语法高亮没有很好的支持这一点(我看到的唯一一个完全正确的是在Firefox开发者工具中的一个)&#xff…

[SpringCloud] 组件性能优化技巧

Feign 配置优化hystrix配置 优化ribbon 优化Servlet 容器 优化Zuul配置 优化 文章目录 1.Servlet 容器 优化2.Feign 配置优化3.Zuul配置 优化4.hystrix配置 优化5.ribbon 优化 1.Servlet 容器 优化 默认情况下, Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器, 可以将 We…

两只小企鹅(Python实现)

目录 1 和她浪漫的昨天 2 未来的旖旎风景 3 Python完整代码 1 和她浪漫的昨天 是的,春天需要你。经常会有一颗星等着你抬头去看&#xff1b; 和她一起吹晚风吗﹖在春天的柏油路夏日的桥头秋季的公园寒冬的阳台&#xff1b; 这世界不停开花&#xff0c;我想放进你心里一朵&am…