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 編譯詳解
相關文章
- gcc7.1 windows版本下載GCWindows
- windows系統下GCC的安裝與配置WindowsGC
- Windows+GCC下記憶體對齊的常見問題WindowsGC記憶體
- solaris下的gcc安裝GC
- linux下的gcc編譯LinuxGC編譯
- Linux下GCC降低版本 gcc 4.4.6LinuxGC
- GCC編譯器的使用GC編譯
- Vagrant 在 Windows 下的使用Windows
- Windows下Github使用WindowsGithub
- windows 下使用goldengate的前提WindowsGo
- windows下vim的使用問題Windows
- nginx在windows下的使用三NginxWindows
- GCC 使用指南及gcc最佳編譯引數(轉)GC編譯
- windows 下使用 phpunit 命令WindowsPHP
- Windows下QtCreator使用QWebEngineViewWindowsQTWebView
- linux下gcc/g++命令LinuxGC
- gcc 和 g++ 的聯絡和區別,使用 gcc 編譯 c++GC編譯C++
- windows下Redis的安裝和使用WindowsRedis
- Linux下修改gcc和g++的版本LinuxGC
- gcc使用手冊(2)(轉)GC
- gcc使用手冊(3)(轉)GC
- gcc使用手冊(4)(轉)GC
- GCC使用基本方法彙總GC
- Windows下更改並使用NTPWindows
- Windows下編譯使用AliyunOSSCSDKWindows編譯
- windows下用命令使用cmakeWindows
- windows下nvm、nrm的安裝及使用Windows
- PHPUnit 在 Windows 下的配置及使用教程PHPWindows
- ubuntu14.04下多個GCC版本的切換UbuntuGC
- linux下gcc/g++編譯用法LinuxGC編譯
- 談一下使用 rsync for windows 的感受(轉)Windows
- macOS下使用VS Code配置gcc、gdb搭建C/C++開發環境MacGCC++開發環境
- RSLB2 windows下使用FAQWindows
- Windows下使用ideagit外掛WindowsIdeaGit
- Windows 系統下使用grep 命令Windows
- Windows下編譯使用AliyunOSSPHPSDKWindows編譯PHP
- git在windows命令列下使用GitWindows命令列
- 我的Windows10下的WSL的使用經歷Windows