windows下的gcc使用
文章目錄
緣起
在windows有很多整合開發環境(vs系列,code::blocks等等)可以用,為什麼要使用gcc在dos下面編譯一個c程式呢?因為博主最近要看一下uC/OS-II方面的東西,然後教材使用的是:任哲的《嵌入式實時作業系統μCOS-II原理及應用》,在這本書裡面介紹將c語言程式一步步編譯執行的時候使用的是Borland C++3.1精簡版,這個編譯器在Turbo C的時代是非常受歡迎的,但是在2009年的時候Borland公司都已經被Micro Focus收購了。所以我就想直接用gcc,不用Borland C++了。
正文
安裝gcc
首先安裝gcc編譯器,這個網上都有教程,如果之前有用過類似code::blocks的整合開發環境的話,gcc編譯器都安裝好了。博主之前是安裝過code::blocks的,所以第一步省了。給個圖
MinGW這個目錄就是gcc移植到windows的結果。因為gcc只是個編譯器嘛,如果要在windows這個平臺下使用的話肯定是要加點東西的。MinGW本身也存在多個分支,可以在Windows、Linux中編譯能在Windows中執行的二進位制程式碼。
記得先給這個bin目錄加個PATH環境變數
使用gcc來編譯c語言程式
使用gcc可以直接編譯一個c語言程式,也可以一步步來編譯。如下:
直接編譯生成.exe檔案
在桌面上建立一個main.c檔案
# include <stdio.h>
int main (void)
{
printf("hello world!!!");
return 0;
}
開啟cmd,進入main.c所在目錄
C:\Users\Administrator\Desktop>
- 生成main.exe:gcc -o main.exe main.c
- 執行main.exe:main
C:\Users\Administrator\Desktop>gcc main.o -o main
C:\Users\Administrator\Desktop>main
hello world!!!
生成的檔案如下圖:
在cmd裡面使用gcc編譯器編譯c檔案流程
進入main.c檔案所在目錄
- 預編譯處理,生成main.i檔案:gcc -E main.c -o main.i
- 編譯處理,生成main.s檔案:gcc -S main.i -o main.s
- 彙編處理,生成main.o檔案:gcc -c main.i -o main.o
- 連結處理,生成main.exe檔案:gcc main.o -o main
- 執行main.exe:main
C:\Users\Administrator\Desktop>gcc -E main.c -o main.i
C:\Users\Administrator\Desktop>gcc -S main.i -o main.s
C:\Users\Administrator\Desktop>gcc -c main.i -o main.o
C:\Users\Administrator\Desktop>gcc main.o -o main
C:\Users\Administrator\Desktop>main
hello world!!!
生成的檔案如下圖所示:
利用gcc編譯多個c語言原始檔
第一步建立檔案
在桌面建立一個資料夾(main),然後在該資料夾裡面建立6個檔案,分別為pa.c、pa.h、pb.c、pb.h、pc.c、pc.h、test.c。基本思路是在test.c檔案裡面引用pa.c、pb.c、pc.c檔案裡的內容。各個檔案的程式碼如下所示:
// pa.h
# ifndef PA_H
# define PA_H
void A_print();
# endif
// pa.c
# include <stdio.h>
# include "pa.h"
void A_print()
{
printf("AAAAAAAAA\n");
}
// pb.h
# ifndef PB_H
# define PB_H
void B_print();
# endif
// pb.c
# include <stdio.h>
# include "pb.h"
void B_print()
{
printf("BBBBBBBB\n");
}
// pc.h
# ifndef PC_H
# define PC_H
void C_print();
# endif
// pc.c
# include <stdio.h>
# include "pc.h"
void C_print()
{
printf("CCCCCCCC\n");
}
// test.c
# include "pa.h"
# include "pb.h"
# include "pc.h"
int main (void)
{
int i = 0;
for(i; i < 10; i++)
{
A_print();
B_print();
C_print();
}
return 0;
}
編譯檔案
利用上面說過的gcc命令將pa.c、pb.c、pc.c、test.c三個檔案編譯形成.o檔案。形成之後的main目錄如下圖所示
連結 & 執行
下面將pa.o、pb.o、pc.o、test.o檔案連結生成test.exe
C:\Users\Administrator\Desktop\main>gcc pa.o pb.o pc.o test.o -o test
然後執行,結果和意料之中的一樣。
gcc基本引數
- -o:指定輸出檔名
- -E:只進行預處理,不編譯
- -S:只編譯,不彙編
- -c:只編譯、彙編,不連結
- -g:包含除錯資訊
- -I:指定include包含的搜尋目錄
- -o:輸出成指定檔名
參考文獻
https://zhidao.baidu.com/question/380094783.html
Microsoft Visual C++ 和 Borland C++ Builder 之比較:
gcc編譯C語言程式的執行過程
GCC 編譯詳解
相關文章
- Linux下GCC降低版本 gcc 4.4.6LinuxGC
- Vagrant 在 Windows 下的使用Windows
- Windows下Github使用WindowsGithub
- nginx在windows下的使用三NginxWindows
- gcc 和 g++ 的聯絡和區別,使用 gcc 編譯 c++GC編譯C++
- Windows下QtCreator使用QWebEngineViewWindowsQTWebView
- windows 下使用 phpunit 命令WindowsPHP
- windows下Redis的安裝和使用WindowsRedis
- Windows下使用ideagit外掛WindowsIdeaGit
- Windows下更改並使用NTPWindows
- 如何在Windows系統下配置最新的MinGW(GCC14)環境,同時應用到Dev-C++中WindowsGCdevC++
- macOS下使用VS Code配置gcc、gdb搭建C/C++開發環境MacGCC++開發環境
- Windows下ElasticSearch的Head安裝及基本使用WindowsElasticsearch
- [20180420]windows下使用cmd的小問題.txtWindows
- Windows 系統下使用grep 命令Windows
- RSLB2 windows下使用FAQWindows
- gccGC
- windows下tftp命令,windows如何使用 tftp 和 telnet 命令WindowsFTP
- 我的Windows10下的WSL的使用經歷Windows
- windows下抓包工具whistle的安裝與使用Windows
- windows下netstat及網路檢視工具的使用Windows
- windows環境下go module的使用和goland配置WindowsGoLand
- windows下tftp命令,windows 7 如何使用 tftp 和 telnet 命令WindowsFTP
- [c++/gcc] Centos 7.9升級 gcc 4.8.5 到 gcc11 [轉]C++GCCentOS
- Windows下Scoop安裝、配置與使用WindowsOOP
- linux下使用windows標頭檔案LinuxWindows
- GCC 使用庫檔名進行連結GC
- 在centos7下安裝gcc9.3的一點感悟CentOSGC
- Linux下常用元件映象源、smaba、gcc、ssh安裝Linux元件GC
- Windows下安裝Redis及使用Python操作Redis的方法WindowsRedisPython
- 32位支援:使用 GCC 交叉編譯GC編譯
- Windows下使用Diskpart格式化U盤Windows
- Windows下使用GitStack搭建Git伺服器WindowsGit伺服器
- 如何在Windows下使用make編譯MakefileWindows編譯
- 在 Windows 下建立卷(volume),可以使用以下步驟:在 Windows 下使用 PowerShell 建立卷,可以使用以下程式碼:在 Windows 下使用 CMD 建立卷,可以使用以下步驟和命令:Windows
- gcc和gdb的基本操作GC
- Windows下的Python共存WindowsPython
- cgo: C compiler "gcc" not found 報錯安裝gccGoCompileGC