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.pswp.cn/news/37833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37833.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

shell之正則表達式及三劍客grep命令

一、正則表達式概述 什么是正則表達式? 正則表達式是一種描述字符串匹配規則的重要工具 1、正則表達式定義: 正則表達式,又稱正規表達式、常規表達式 使用字符串描述、匹配一系列符合某個規則的字符串 正則表達式 普通字符: 大小寫字母…

opencv視頻截取每一幀并保存為圖片python代碼CV2實現練習

當涉及到視頻處理時,Python中的OpenCV庫提供了強大的功能,可以方便地從視頻中截取每一幀并將其保存為圖片。這是一個很有趣的練習,可以讓你更深入地了解圖像處理和多媒體操作。 使用OpenCV庫,你可以輕松地讀取視頻文件&#xff0…

判斷推理 -- 圖形推理 -- 位置規律

一組圖:從前往后找規律。 二組圖:從第一組圖找規律,第二組圖應用規律。 九宮格: 90%橫著看找規律,第一行找規律,第二行驗證規律,第三行應用規律。 所有有元素組成都是線,三角形&…

面試熱題(驗證二叉搜索樹)

給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉樹 二叉樹滿足以上3個條件&#xff0c…

spark的使用

spark的使用 spark是一款分布式的計算框架,用于調度成百上千的服務器集群。 安裝pyspark # os.environ[PYSPARK_PYTHON]解析器路徑 pyspark_python配置解析器路徑 import os os.environ[PYSPARK_PYTHON]"D:/dev/python/python3.11.4/python.exe"pip inst…

喜盈門、夢百合競相入局,智能床墊起風了

配圖來自Canva可畫 現代人的生活壓力普遍大,熬夜、失眠是常有的事,提高睡眠質量十分的重要。近些年來,市面上出現了許多輔助睡眠的產品,比如香薰、褪黑素、蒸汽眼罩、降噪耳塞、助眠枕、睡眠監測app等助眠神器。可以說為了睡個好…

【CLion + ROS2】在 clion 中編譯調試 ros2 package

目錄 0 背景1. 命令行編譯 ros2 package2. 使用 clion 打開 ros2 工程3. 使用 clion 編譯整個 ros2 工程3.1 使用 clion 的 external tool 配置 colcon build3.2 開始編譯 dev_ws 工程3.3 編譯結果: 4. 調試單獨的 ros2 package4.1 創建 ros2 package 的獨立的 colc…

【Git】版本控制器詳解之git的概念和基本使用

版本控制器git 初始Gitgit的安裝git的基本使用初始化本地倉庫配置本地倉庫三區協作添加---add修改文件--status|diff版本回退--reset撤銷修改刪除文件 初始Git 為了能夠更?便我們管理不同版本的?件,便有了版本控制器。所謂的版本控制器,就是?個可以記…

yolo源碼注釋2——數據集配置文件

代碼基于yolov5 v6.0 目錄: yolo源碼注釋1——文件結構yolo源碼注釋2——數據集配置文件yolo源碼注釋3——模型配置文件yolo源碼注釋4——yolo-py 數據集配置文件一般放在 data 文件夾下的 XXX.yaml 文件中,格式如下: path: # 數據集存放路…

基于ssm+vue的新能源汽車在線租賃管理系統源碼和論文PPT

基于ssmvue的新能源汽車在線租賃管理系統源碼和論文PPT010 開發環境: 開發工具:idea 數據庫mysql5.7(mysql5.7最佳) 數據庫鏈接工具:navcat,小海豚等 開發技術:java ssm tomcat8.5 摘 要 隨著科學技術的飛速發展&#xff0…

Ajax及前端工程化

Ajax:異步的js與xml。 作用: 1、通過ajax給服務器發送數據,并獲得其響應的數據。 2、可以在不更新整個網頁的情況下,與服務器交換數據并更新部分網頁的技術。 一、同步與異步 二、原生Ajax 1、準備數據地址 2、創建XMLHttpReq…

SCSS的基本用法

1、聲明變量 $ 聲明變量的符號 $ 下面這張圖左半部分是scss的語法,右半部分是編譯后的css。(整篇文章皆是如此) 2、默認變量 !default sass 的默認變量僅需要在值后面加上 !default 即可。 如果分配給變量的值后面添加了 !default 標志…

Qt 雜項(Qwt、樣式等)

Qt隱藏窗口邊框 this->setWindowFlags(Qt::FramelessWindowHint);Qt模態框 this->setWindowModality(Qt::ApplicationModal);QLable隱藏border 代碼中設置 lable->setStyleSheet("border:0px");或者UI中直接設置樣式:“border:0px” Qwt開源…

JS實現樹形結構、一維數組以及map之間的轉換

const treeData[ {id:1, name:中國, children:[ {id:11,name:河南省,children:[{id:111,name:南陽市,children:[{id:1111,name:淅川縣,children:null}]},{id:112,name:鄭州市,children:[{id:1121,name:中牟縣,children:null}]}] }, {id:22,name:廣東省,children:[{id:221,name:…

c++中的多態

文章目錄 1.多態的概念1.1概念 2.多態的定義及實現2.1多態的構成條件2.2虛函數2.3虛函數的重寫2.4 C11 override 和 final2.5 重載、覆蓋(重寫)、隱藏(重定義)的對比 3. 抽象類3.1概念3.2接口繼承和實現繼承 4.多態的原理4.1虛函數表4.2多態原理分析4.3 動態綁定與靜態綁定 5.單…

學習筆記整理-面向對象-03-構造函數

一、構造函數 1. 用new調用函數的四步走 new 函數();JS規定,使用new操作符調用函數會進行"四步走": 函數體內會自動創建出一個空白對象函數的上下文(this)會指向這個對象函數體內的語句會執行函數會自動返回上下文對象,即使函數沒…

HDMI接口的PCB布局布線要求

高清多媒體接口(High Definition Multimedia Interface),簡稱:HDMI,是一種全數字化視頻和聲音發送接口,可以發送未壓縮的音頻及視頻信號。隨著技術的不斷提升,HDMI的傳輸速率也不斷的提升&#…

使用GEWE框架進行微信群組管理(三)

友情鏈接:GEWE框架官網 geweapi.com 點擊訪問即可。 邀請或添加聯系人進群 小提示: 不管是添加40人以內還是以上都用此接口cause填寫邀請進群的理由 請求URL: http://域名地址/api/group/invite 請求方式: POST 請求頭&…

brew+nginx配置靜態文件服務器

背景 一下子閑下來了,了解的我的人都知道我閑不下來。于是,我在思考COS之后,決定自己整一個本地的OSS,實現靜態文件的訪問。那么,首屈一指的就是我很熟的nginx。也算是個小復習吧,復習一下nginx代理靜態文…