当前位置: 首页 > news >正文

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

文章目录

    • 一、安装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.lryc.cn/news/129577.html

相关文章:

  • 回归预测 | MATLAB实现FA-BP萤火虫算法优化BP神经网络多输入单输出回归预测(多指标,多图)
  • 【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互
  • Java课题笔记~ Ajax
  • 调整mysql 最大传输数据 max_allowed_packet=500M
  • 【工具】 删除Chrome安装的“创建快捷方式”
  • windows上的docker自动化部署到服务器脚本
  • VoxWeekly|The Sandbox 生态周报|20230814
  • Aurora 8B/10B
  • 如何关闭“若要接收后续google chrome更新,您需使用windows10或更高版本”
  • python中使用xml快速创建Caption和URL书签管理器应用程序
  • 分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测
  • Vue中使用v-bind:class动态绑定多个类名
  • 深入了解Maven(一)
  • PostgreSQL中的密码验证方法
  • 【微信小程序】小程序之间的跳转方式总结
  • 基于Mysqlrouter+MHA+keepalived实现高可用半同步 MySQL Cluster项目
  • Android12.0 系统限制上网系列之iptables用IOemNetd实现清除所有规则的实现
  • vue2和vue3响应式原理
  • 【面试八股文】每日一题:谈谈你对线程的理解
  • arm开发板 GDB远程调试方法
  • Linux命令(71)之unxz
  • 广告牌安全传感器,实时监测事故隐患尽在掌握
  • 对比学习损失—InfoNCE理论理解
  • 贝锐蒲公英助力电子公交站牌联网远程运维,打造智慧出行新趋势
  • SpringBoot + Vue 微人事(十)
  • 【Redis】Redis哨兵模式
  • 系统架构师---软件重用、基于架构的软件设计、软件模型
  • 【Web开发指南】MyEclipse XML编辑器的高级功能简介
  • 设计模式-观察者模式(观察者模式的需求衍变过程详解,关于监听的理解)
  • vue+electron中实现文件下载打开wps预览