學習gcc的基本概念與簡單用法。
1、GCC與gcc
GCC (GNU Compiler Collection)
GNU 編譯器集合,包含眾多語言的編譯器,包括C,C++,Java等等
GCC多用于嵌入式作業系統的編譯,如Linux,VxWorks,Android等等
gcc 單指GCC中的C語言編譯器
gcc 多用于內核開發以及少數應用程式開發
2、gcc的幕后作業
想了解更多更詳細的關于編譯鏈接深層次內容,請閱讀書籍《CSAPP》第7章與《程式員的自我修養》,因為這里我的學習記錄只記錄結果與常用的幾個編譯方法。
我們先來看一個簡單的程式:
test.c源程式:
#include <stdio.h>
#include "func.h"
int g_global = 0;
int g_test = 1;
int main(int argc, char *argv[])
{
func();
printf("&g_global = %p\n", &g_global);
printf("&g_test = %p\n", &g_test);
printf("&func = %p\n", &func);
printf("&main = %p\n", &main);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func.h頭檔案:
#include <stdio.h>
void func()
{
#ifdef TEST
printf("TEST = %s\n", TEST);
#endif
return;
}
1
2
3
4
5
6
7
8
9
10
在Linux下使用gcc進行編譯:
gcc test.c -o test
1
然后運行:
./test
1
結果如下:
&g_global = 0x804a020
&g_test = 0x804a014
&func = 0x80483c4
&main = 0x80483c9
1
2
3
4
很明顯,上述程式很簡單,大一的新生都知道為什么。但是今天我們不是學習這個程式的,而是想要了解,運行 gcc test.c -o test 這個命令后,是如何一步一步生成可執行檔案test的。
實際上,上述C程式從源檔案到二進制可執行檔案,有以下四個步驟:
預處理 cpp
C編譯 cc
匯編 as
鏈接 ld
大概編譯一個源程式為二進制檔案的程序如下圖所示:
在這里插入圖片描述
uj5u.com熱心網友回復:
QQ:1247333786轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/35063.html
標籤:區塊鏈技術
上一篇:求evacnet軟體啊!!
下一篇:以太坊創始人V神叫你來填調查問卷
