日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一课 GCC入门

發(fā)布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一课 GCC入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1序言

  gcc是一個可移植的編譯器,支持多種硬件平臺;也不僅僅是一個本地編譯器也是一個跨平臺編譯器;支持多張語言編譯時按照模塊化設(shè)計支持多種語言。

  gcc編譯過程:預(yù)處理(預(yù)處理器);編譯(編譯器);匯編(匯編器);鏈接(鏈接器);

  gcc編譯簡化:參數(shù)ESc-->文件iso;

2實踐

  先建立一個c文件hello.c,并輸入如下打印出"hello world!";

  

#include <stdio.h>int main(void) {printf("hello world!\n");return 0; }

  

  2.1下面來記錄一下gcc編譯過程:

  1>預(yù)處理階段? ? ??

gcc -E hello.c -o hello.i //使用-E參數(shù)表示編譯只到預(yù)處理階段,這個階段生成的文件是后綴為i,也可以在-E前面加上-Wall參數(shù)顯示編譯信息(以下如此),初學(xué)者非常有用。

  2>編譯階段

gcc -S hello.i -o hello.s //使用-S參數(shù)把預(yù)處理階段生成的文件編譯成匯編文件

  3>匯編階段

gcc -c hello.s -o hello.o //使用-c參數(shù)把匯編文件編譯生成目標(biāo)文件,這是二進(jìn)制文件

? ? ? 4>鏈接階段

gcc hello.o -o hello //目標(biāo)文件鏈接生成可執(zhí)行文件不用參數(shù),此階段會把相關(guān)的一些系統(tǒng)靜態(tài)庫動態(tài)庫文件加入進(jìn)來生成可執(zhí)行文件

  以上4個步驟也可以使用一條命令完成:

gcc hello.c -o hello //直接把c源文件編譯成可執(zhí)行文件

  2.2gcc多文件編譯  

上面的例子是針對一個源文件的,但是往往我們在開發(fā)中是多個文件那這又怎么操作呢,下面把上面的代碼拆分一下如下:

  1.建立hello_fn.h文件,文件內(nèi)容如下:  

#ifndef _HELLO_FN_H #define _HELLO_FN_H void print(const char* str); #endif

  2.建立hello_fn.c文件,內(nèi)容如下:

#include <stdio.h> #include "hello_fn.h"void print(const char* str) {printf(str); }

  3.建立hello_main.c文件,內(nèi)容如下;

#include "hello_fn.h"int main(void) {print("hello world!\n");return 0; }

  下面分步驟生成目標(biāo)文件在生成可執(zhí)行文件:

gcc -Wall -c hello_fn.c -o hello_fn.o gcc -Wall -c hello_main.c -o hello_main.o gcc -Wall hello_fn.o hello_main.o -o hello_main

  也可以一次性生成可執(zhí)行文件:

gcc -Wall hello_fn.c hello_main.c -o hello_main

  這樣結(jié)果是一樣,第一種方法適合多個目標(biāo)文件其中一個模塊發(fā)生變化此時只需要編譯改變的模塊最后在把所有的目標(biāo)文件鏈接成可執(zhí)行文件,現(xiàn)在假如hello_fn.c文件發(fā)生變化,只需要編譯hello_fn.c為目標(biāo)文件hello_fn.o,最后鏈接hello_main.o生成可執(zhí)行文件。

? ? ??

轉(zhuǎn)載于:https://www.cnblogs.com/luoliang/p/3843654.html

總結(jié)

以上是生活随笔為你收集整理的第一课 GCC入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。