GCC學習(1)之MinGW使用

来源:http://www.cnblogs.com/alphagl/archive/2016/12/29/6234895.html
-Advertisement-
Play Games

GCC學習(1)之MinGW使用 因為後續打算分享一些有關GCC的使用心得的文章,就把此篇當作一個小預熱,依此來瞭解下使用GNU工具鏈(gcc、gdb、make等)在脫離IDE的情況下如何開發以及涉及的編譯相關的原理。當然,這方面的內容開發環境不限於使用MinGW,像之前介紹過的Cygwin,或者直 ...


GCC學習(1)之MinGW使用

因為後續打算分享一些有關GCC的使用心得的文章,就把此篇當作一個小預熱,依此來瞭解下使用GNU工具鏈(gcc、gdb、make等)在脫離IDE的情況下如何開發以及涉及的編譯相關的原理。當然,這方面的內容開發環境不限於使用MinGW,像之前介紹過的Cygwin,或者直接在Linux系列的操作系統上,一般都自帶GUN工具。

作者:AlphaGL。版權所有,歡迎保留原文鏈接進行轉載 :)

MinGW介紹

MinGW全稱Minimalist GNU for Windows,也是從Cygwin發展而來的,但更精簡。是一套將GCC和GNU Binutils移植到Windows平臺的編譯工具集。支持編譯C、C++、Objective-C、Fortran及Ada等語言(同時,也是GCC支持的語言)。同時,使用MinGW編譯出來的程式不需要額外的第三方DLL就能直接在Windows下運行。以上介紹均來自MinGw維基百科,簡單來說,就是提供了一套在Windows平臺也能使用GUN的工具。

MinGW官網:
http://www.mingw.org/

MinGW下載地址:
http://sourceforge.net/projects/mingw/

MinGW安裝

MinGW的安裝步驟很簡單。如圖:


分別把mingw-developer-toolkitmingw32-basemingw32-gcc-g++msys-base標記下,其它的可選。


在Installation->Apply Changes,應用下,就會自動安裝所選的包了。

配置環境變數

例如:我的MinGW安裝在D:\env\MinGW。如圖:


並把MINGW_HOMEMINGW_MAKE_HOME添加到Path中。%MINGW_HOME%\bin;%MINGW_MAKE_HOME%\bin;


在Windows終端中,輸入gcc --versionmake --version,能輸出相應的版本信息,則證明配置成功了。

MinGW使用

新建hello_mingw.chello.hhello.cmakefile,代碼如下:
hello_mingw.c

#include <stdio.h>
#include "hello.h"

int main()
{
  printf("hello mingw\n");
  test();
  return 0;
} 

hello.h

#include <stdio.h>

void test();

hello.c

#include "hello.h"

void test()
{
  printf("this is a test");
}

makefile

hello.exe:hello_mingw.o hello.o
    gcc hello_mingw.o hello.o -o hello

hello_mingw.o:hello_mingw.c
    gcc -c hello_mingw.c

hello.o:hello.c hello.h
    gcc -c hello.c

clean:
    rm *.exe *.o

在Windows命令終端中執行如下命令:

至此成功生成hello.exe,運行並執行了正確的輸出。

以上便是藉助MinGW來熟悉gcc以及makefile的使用的一個小實踐。後續還有更多關於gcc相關的內容分享,敬請期待。

技術交流QQ群:528655025
作者:AlphaGL
出處:http://www.cnblogs.com/alphagl/
版權所有,歡迎保留原文鏈接進行轉載 :)



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 可以執行 SSIS Package ,證明用 SSIS Package 的賬戶是可以執行成功的。SQL Server Agent 預設指定賬號是 Network Service。 那麼可以嘗試一下將 SQL Server Agent 和 SQL Server Integration Service ...
  • 1 ORA-00001: 違反唯一約束條件 (.) 2 ORA-00017: 請求會話以設置跟蹤事件 3 ORA-00018: 超出最大會話數 4 ORA-00019: 超出最大會話許可數 5 ORA-00020: 超出最大進程數 () 6 ORA-00021: 會話附屬於其它某些進程;無法轉換會話 ...
  • Oracle 11g在DBMS_SHARED_POOL包中引入了一個名為PURGE的新存儲過程,用於從對象庫緩存中刷新特定對象,例如游標,包,序列,觸發器等。也就是說可以刪除、清理特定SQL的執行計劃,這樣在特殊情況下,就避免你要將整個SHARED POOL清空的危險情況。例如某個SQL語句由於優化... ...
  • 原文地址:http://kafka.apache.org/documentation.html ############################# System ############################# #唯一標識在集群中的ID,要求是正數。 broker.id=0 #服務... ...
  • 背景 mysql可以支持多種不同的存儲引擎,innodb由於其高效的讀寫性能,並且支持事務特性,使得它成為mysql存儲引擎的代名詞,使用非常廣泛。隨著SSD逐漸普及,硬體存儲成本越來越高,面向寫優化的rocksdb引擎逐漸流行起來,我們也是看中了rocksdb引擎在寫放大和空間放大的優勢,將其引入 ...
  • 原文地址:http://blog.csdn.net/shmiloy001/article/details/6287317 首先,授權給指定用戶。 一個用戶的預設表空間只能有一個,但是你可以試下用下麵的語句為其授權在別的表空間中創建對像: alter user username quota unlim... ...
  • rpm簡介 rpm( Red Hat Package Manager )是一個開放的軟體包管理系統。它工作於Red Hat Linux及其他Linux系統,成為Linux中公認的軟體包管理標準。 rpm將編譯好的應用程式的各組成文件打包成一個或幾個程式包文件,從而更方便地實現程式包的安裝、升級、卸載... ...
  • 使用github倉儲需要本機生成一個公鑰key 添加到自己的git賬戶SSH keys中 mac 生成方法: 1. 打開終端 輸入 ssh-keygen 然後系統提示輸入文件保存位置等信息,連續敲三次回車即可,生成的SSH key文件保存在中~/.ssh/id_rsa.pub 2. 然後用文本編輯工 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...