在windows下使用GNU工具 gcc編譯器

2022-07-26 09:54:14 字數 2389 閱讀 1618

2018-01-12  19:10:42

mingw是指只用自由軟體來生成純粹的win32可執行檔案的編譯環境,它是minimalist(簡化) gnu on windows的略稱。

unix-like系統上的gcc的windows移植版本:mingw編譯系統/工具

gcc 就是 mingw 的核心所在,gcc 是一套支援眾多計算機程式語言的編譯系統,而且在語言標準的實現上是最接近於標準的。並且 gcc 幾乎可以移植到目前所有可用的計算機平台。(我的電腦上就還裝有 devkitpro,裡面包含 gcc 的 arm(for gba/ds/gp32) 和 mips(for psp) 版本。)

文字編輯器產生原始檔+gcc編譯系統編譯(產生可執行檔案??)

gcc-core c語言編譯器 

gcc-c++ c++語言編譯器 

mingw-runtime mingw的執行時庫(這個必須安裝) 

win32api win32的api函式標頭檔案和連線庫 

binutils mingw的彙編器和聯結器等基礎工具 

gdb mingw中的除錯工具 

mingw32-make make工具,用以更好的管理你的專案 

gcc -v           //

檢視gcc的版本資訊

gcc -o test test.c //

執行test.c,產生檔案命名為test,若省略則預設為a

gcc -e           //

預處理              

//-g 可執行程式包含除錯資訊

//-o output_filename,確定輸出檔案的名稱為output_filename             

//-c 只編譯不鏈結

//-c 產生.o檔案,就是obj檔案,不產生執行檔案

$:表示程式所在目錄,比如:f:\mingw>

$ gcc -o hello hello.c

執行如下 : $ hello

輸出: hello,world!

分步暫時省略,太懶了,看上面的**

比如:乙個工程有main.c、 foo.c 、def.c生成foo的可執行檔案。

編譯命令如下:

$ gcc –c main.c foo.c def.c –o foo

//或者:

$ gcc –o foo main.c foo.c def.c

函式庫是一些標頭檔案(.h)和庫檔案(.so或者.a)的集合。linux下的大多數函式都預設將標頭檔案放到/usr/include/目錄下,而庫檔案則放到/usr/lib/目錄下,但並非絕對如此。因此gcc設有新增標頭檔案和庫檔案的編譯選項開關。

1. 新增標頭檔案:-i

例如在/home/work/include/目錄下有編譯foo.c所需標頭檔案def.h,為了讓gcc能找到它們,就需要使用-i選項:

$ gcc foo.c -i /home/work/include/def.h -o foo

$ gcc foo.c –l /home/work/lib –ldef.a –o foo

說明:-l選項指示gcc去連線庫檔案libdef.so。linux下的庫檔案命名有乙個約定,即庫檔案以lib三個字母開頭,因為所有的庫檔案都遵循這個約定,故在用-l選項指定鏈結的庫檔名時可以省去lib三個字母。

[題外語] 

linux下的庫檔案分為動態鏈結庫(.so檔案)和靜態鏈結庫(.a檔案)。gcc預設為動態庫優先,若想在動態庫和靜態庫同時存在的時候鏈結靜態庫需要指明為-static選項。比如上例中如還有乙個libdef.a而你想鏈結libdef.a時候命令如下:

$ gcc foo.c –l /home/work/lib –static –ldef.a –o foo

gcc提供不同程度的**優化功能。開關選項是:-on,n取值為0到3。預設為1。-o0表示沒有優化,而-o3是最高優化。優化級別越高**執行越快,但並不是所有**都能夠載入最高優化,而應該視具體情況而定。但一般都使用-o2選項,因為它在優化長度、編譯時間和**大小之間,取得了乙個比較理想的平衡點。

以下這段是我摘自別人文章的,說的比較詳細:

編譯時使用選項-o可以告訴gcc同時減小**的長度和執行時間,其效果等價於-o1。在這一級別上能夠進行的優化型別雖然取決於目標處理器,但一般都會包括執行緒跳轉(thread jump)和延遲退棧(deferred stack pops)兩種優化。選項-o2告訴gcc除了完成所有-o1級別的優化之外,同時還要進行一些額外的調整工作,如處理器指令排程等。選項-o3則除了完成所有-o2級別的優化之外,還包括迴圈展開和其它一些與處理器特性相關的優化工作。通常來說,數字越大優化的等級越高,同時也就意味著程式的執行速度越快。

下面通過具體例項來感受一下gcc的**優化功能,所用程式如清單3所示。

在Windows系統下使用GNU命令

日常接觸和管理的系統,大多是linux unix系統,所以在自己的windows作業系統上,配置乙個gnu命令環境,可以在windows系統使用linux命令,方便命令的練習和掌握。windows環境gnu的配置步驟如下 其中有基本包和公升級包兩個包 unxutils.zip 基本包 unxutil...

在Windows下使用GCC

如何安裝 mingw gcc 編譯器套件 1 使用圖形化的自動安裝程式 2 使用命令列工具 mingw get 3 手動安裝 binutils mingw runtime dev and dll w32api mpc dev and dll mpfr dev and dll gmp dev and ...

在Windows 下使用OpenCL

目前,nvidia和 amd的windows driver均有支援opencl nvidia的正式版driver是從195.62版開始,而amd則是從9.11版開始 nvidia的正式版driver中包含 opencl.dll,因此可以直接使用。amd到目前為止,則仍需要安裝其sdk才有opencl...