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

news2024/11/25 0:21:43

文章目录

    • 一、安装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.coloradmin.cn/o/880146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx网站服务(安装nginx、平滑升级nginx、nginx各种访问配置)

一、Nginx概述 1、什么是nginx? 稳定性高、系统资源消耗低、对HTTP并发连接的处理能力高(单台物理器可支持30000-50000个并发请求) NG并发连接能力有2个因素的影响 ①CPU的个数 ②本地吴立琪系统的最大文件打开数2、Nginx应用场景 静态服…

日常BUG——普通页面跳转tabbar页面报错

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 微信小程序页面跳转的时候出现下面的问题: wx.redirectTo({url: /pages/index/i…

行业分析(思维逻辑)

1、 如何着手分析一个行业? - 知乎做行业分析,很容易陷入一个误区,就是认为:我只要能找到最全的、最准的信息,就能做好行研。所以很多知…https://www.zhihu.com/question/20219092/answer/666346625 2、 3、 4、 …

Linux下搭建java环境

文章目录 一,xshell链接linux二,linux安装jdk环境 一,xshell链接linux 这里用到的工具,VMware搭配CentOS7 64位Xshell5 操作之前确保,传输Xshell连接了虚拟机 打开Xshell,文件->新建 主机ip—>进入虚拟机,右键打开终端,输入命令:ifco…

统筹型人才PK执行型人才,有啥区别?

统筹型人才PK执行型人才,有啥区别? 在大企业成长序列中 在着力培养统筹型人才 趣讲大白话:将还是兵? 【趣讲信息科技257期】 **************************** 我有华为公司当员工的同事 当干到一定年龄和职位后 有个判定&#xff1a…

手把手教你更改Vue项目图标

引言: Vue.js 是一款轻量级的前端框架,具有灵活、高效和易用等特点。在开发Vue项目时,我们经常会使用第三方库或工具来为项目添加图标,以提升用户界面的美观度。在本文中,将向大家介绍如何手把手更改Vue项目的图标&am…

R语言实现计算净重新分类指数(NRI)和综合判别改善指数(IDI)

两个模型比较,与第一个模型相比,NRI(重新分对的 - 重新分错的)/总人数。IDI(新模型患者平均预测概率-旧模型患者平均预测概率)-(新模型非患者平均预测概率-旧模型非患者平均预测概率&#xff09…

【Unity每日一记】关于物体(敌方)检测—(向量点乘相关)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 | 新发出品 | 良心教程)

文章目录 一、前言二、插件下载三、案例1:第三人称自由视角,Free Look character场景1、场景演示2、组件参数2.1、CinemachineBrain:核心2.2、CinemachineFreeLook:第三人称自由视角相机2.2.1、设置Follow:跟随2.2.2、…

“Linux vs. Windows: 一些你可能不知道的区别“

文章目录 每日一句正能量前言分享一些在Linux上顺理成章,换到Windows上就可能令人费解的事介绍或分享一些Linux的使用技巧介绍或分享一些Windows的使用技巧后记 每日一句正能量 世界上最暖心的一句话,不是你在成功时多热切地喝彩,而是在失意时…

大疆秋招指南,网申测评和面试攻略

大疆秋招内容简介 这是一个非常卷的时代,一到毕业季,各种各样规模不一的公司,纷纷向社会招聘,竞争实力强,知名度越高的企业,往往越能得到能力出众的人才的青睐,也正是在一批批新血液的注入下&a…

使用插件实现pdf,word预览功能

效果 代码&#xff1a; 插件地址&#xff1a; https://github.com/501351981/vue-office <a-modalv-model:visible"visible":title"title"ok"handleOk":bodyStyle"bodyStyle":width"1200":maskClosable"false"…

运营商三要素 API:构建安全高效的身份验证系统

当今数字化的世界中&#xff0c;身份验证是各行各业中至关重要的一环。为了保护用户的隐私和数据安全&#xff0c;企业需要寻求一种既安全可靠又高效便捷的身份验证方式。运营商三要素 API 应运而生&#xff0c;为构建安全高效的身份验证系统提供了有力的解决方案。 运营商三要…

【Apple】Logic Pro导入7.1.4.wav并自动分析多声道

Step1: 创建空项目 Step2: 选中下图“使用麦克风或...”这一项&#xff0c;底下要创建的轨道数填1就行。 点击创建之后&#xff1a; Step3: 拖动文件、拖动文件、拖动文件到项目中&#xff0c;并选中复选框“所有所选文件都源自一个项目&#xff08;将创建一个智能速度多轨道集…

Vue3使用vue-print-nb插件调起打印功能

一、效果图 二、使用方式 安装插件 //Vue2.0版本安装方法 npm install vue-print-nb --save yarn add vue-print-nb//Vue3.0版本安装方法&#xff1a; npm install vue3-print-nb --save yarn add vue3-print-nb在全局引用 import Print from vue-print-nb Vue.use(Print)打…

用身边统计学告诉大家ChatGPT听闻过的、用过的、重度使用的大概有多少?

最近摸鱼时&#xff0c;看到有人发帖说信息茧房真的是无处不在。讨论一番后&#xff0c;确实是这样&#xff0c;每个人都在不同程度的“坐井观天”罢了。拿最近火遍全球的ChatGPT来说&#xff0c;身边真的不少人听都没听过。这里有个更详细调查&#xff0c;不过是Sunergia做的&…

一、DVP摄像头调试笔记(排查问题篇)

一、DVP摄像头无应答排查&#xff08;MCLK&#xff09; 1、首先检查当前MCLK 时钟是否存在&#xff0c;MCLK可以理解为摄像头的心跳&#xff08;没有主时钟就是主控或者晶振没有工作&#xff0c;应该检测主控驱动/检查晶振电源不起震问题&#xff09;。目前提供MCLK存在两种方…

推断统计(单因素方差分析)

此时我们是取的四种不同图案的儿童水杯的销量作为样本进行分析&#xff0c;单因素方差分析可以用于比较多个独立的正态总体均值之间是否存在显著差异&#xff0c;是独立样本T检验的推广版&#xff0c;也属于参数假设检验。 进行假设检验时未说明方差是否齐性时都要先进行方差…

并发编程 - 线程间三种常见的通信手段

线程间通信是指多个线程之间通过某种机制进行协调和交互&#xff0c;例如&#xff1a;线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中有以下三种实现线程等待的手段 &#xff1a; Object 类提供的 wait()&#xff0c;notify() 和 notifyAll() 方法&#xff1b;C…

Chapter 2 Crystal Dynamics 2.1 晶格振动

2.1 Lattice Vibration 晶格振动 Born-Oppenheimer Approximation Electrons’ movement: Electron theory free electron theoryenergy band theory Atoms’ movement crystal dynamicslattice vibration 当研究电子运动时&#xff0c;忽略原子运动&#xff1b;当研究原子…