文章目录
- 一、安装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-core
、gcc-g++
,在新增
一栏,点击跳过
,在下拉列表选择需要安装的版本;
2. 选择gdb
搜索gdb
,在Devel
分类下,分别找到gdbe
,在新增
一栏,点击跳过
,在下拉列表选择需要安装的版本;
3. 选择mingw64下的gcc-core、gcc-g++
搜索mingw64
,在Devel
分类下,分别找到mingw64-i686-gcc-core
,mingw64-i686-gcc-g++
,mingw64-x86_64-gcc-core
,mingw64-x86_64-gcc-g++
在新增
一栏,点击跳过
,在下拉列表选择需要安装的版本;
4. 选择make
搜索make
,在Devel
分类下,分别找到make
在新增
一栏,点击跳过
,在下拉列表选择需要安装的版本;
5. 选择cmake
搜索cmake
,在Devel
分类下,分别找到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
step2:执行./configure生成Makefile文件
$ ./configure
step3:执行make命令
$ make
step4:执行make install命令
执行完make命令后,已经在sed目录下生成了sed.exe命令,继续执行make install命令,将新生成的sed命令,添加到/usr/local/bin路径,这样就可以在Cygwin整个环境中使用这个命令了。
$ make install
step5:执行新生成的sed命令
$ sed --version
注意:
- 需要重启
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目录下)