linux命令编译C语言程序
生活随笔
收集整理的這篇文章主要介紹了
linux命令编译C语言程序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
C語言簡介:
BCPL->newB->C->UNIX->Linux->gcc C語言專門編寫操作系統(tǒng)的語言,所以天生適合對硬件編程,也以運行速度快著稱,也非常適合實現(xiàn)數(shù)據(jù)結(jié)構(gòu)和算法。 由于出現(xiàn)時間過早,有很多缺陷,也沒想普通人會使用C語言編程,因此存在著些陷井,但前輩總結(jié)了一些避免的經(jīng)驗《C語言陷井和缺陷》。自由源于自律
C89語法標(biāo)準(zhǔn),也是gcc默認(rèn)的語法標(biāo)準(zhǔn)。 C99語法標(biāo)準(zhǔn),對C語言的擴(kuò)展和增強(qiáng) std=gnu99。 C11語法標(biāo)準(zhǔn),全新的升級。第一個C程序:
#include <stdio.h>
程序員所編寫的代碼不是標(biāo)準(zhǔn)的C代碼,需要一段程序反它釋放成標(biāo)準(zhǔn)的C代碼,負(fù)責(zé)翻譯的程序叫預(yù)處理器,翻譯的過程叫預(yù)處理,被釋翻譯的代碼叫預(yù)處理指令,以#號開頭的都是預(yù)處理指令。
#include 的功能就把一個頭文件導(dǎo)入到當(dāng)前文件。
#include “xxx.h” 先當(dāng)前路徑下加載xxx.h文件,如果沒有再從系統(tǒng)指定的 路徑下加載xxx.h文件。
#include <> 從系統(tǒng)指定的路徑下加載xxx.h文件。
操作系統(tǒng)通過設(shè)置環(huán)境變量來指定加載頭文件的路徑。
stdio.h
頭文件:以.h結(jié)尾,里面存儲是一些輔助性的代碼,絕大多數(shù)是函數(shù)的聲明(也就是函數(shù)的開頭)。源文件:以.c結(jié)尾,里面記錄的是功能性的代碼。C語言標(biāo)準(zhǔn)委員會為C語言以函數(shù)形式提供了一些基礎(chǔ)功能,這些函數(shù)被封裝在libc.so庫文件中。有很多頭文件負(fù)責(zé)對libc.so進(jìn)行說明,stdio.h就是其中一個,常用的還有stdlib.h、string.h。stdio.h負(fù)責(zé)對輸入輸出功能的函數(shù)進(jìn)行說明,standard input output。 int main() {printf("Hello World!\n"); return 0; }main函數(shù):
C語言以函數(shù)以單位管理代碼,一個函數(shù)就一段具有某項功能的代碼段。main函數(shù)是程序的執(zhí)行入口,有且只有有一個。int 是一種數(shù)據(jù)類型,它表示main的執(zhí)行結(jié)果是一個整數(shù)。return 功能有兩個:1、結(jié)束函數(shù)的執(zhí)行 2、返回一個數(shù)據(jù)給函數(shù)的調(diào)用者main函數(shù)由操作系統(tǒng)調(diào)用,它的返回值給了操作系統(tǒng),反映了該程序是怎么結(jié)束的,通常有三種:正數(shù) 出現(xiàn)異常0 一切正常負(fù)數(shù) 出現(xiàn)錯誤echo $? 查看上一程序main函數(shù)的返回值。printf/scanf是標(biāo)準(zhǔn)庫中的函數(shù),負(fù)責(zé)輸入、輸出數(shù)據(jù),用來調(diào)試程序。 轉(zhuǎn)義字符:鍵盤上沒有一些符號,有一些特殊字符來表示,這些特殊字符叫轉(zhuǎn)義字符,\n就是其中一個。\n 換行\(zhòng)r 回到行首\t 制表符,對來自動對齊數(shù)據(jù)\a 鈴響%% 顯示一個%\\ 表示一個\\b 退一個字符 C語言以分號作為一行代碼的結(jié)束,使用大括號劃分代表區(qū)域。編譯器:
負(fù)責(zé)把人能看懂的記錄代碼的文本文件,翻譯成計算機(jī)能看懂二進(jìn)制文件,由預(yù)處理器、編譯器、鏈接器組成。 gcc是GNU社區(qū)為了編譯Linux代碼而開發(fā)一款免費的編譯器,默認(rèn)采用C89語法,-std=gnu99可以設(shè)置C99語法。 常用的參數(shù):-E 顯示預(yù)處理結(jié)果-c 只編譯不鏈接-o 設(shè)置編譯結(jié)果的名字-I 指定頭文件的加載路徑-S 生成匯編代碼-l 指定要使用庫,-lm 使用數(shù)學(xué)庫-Wall 以嚴(yán)格的標(biāo)準(zhǔn)來檢查代碼,顯示更多的警告提醒-Werror 把警告當(dāng)錯誤處理-std 指定編譯語法標(biāo)準(zhǔn)C代碼變成可執(zhí)行程序的過程:
1、預(yù)處理 把源文件翻譯成預(yù)處理文件gcc -E code.c 顯示預(yù)處理結(jié)果gcc -E code.c -o code.i 生成以.i結(jié)尾的預(yù)處理文件 2、編譯 把預(yù)處理文件翻譯成匯編文件gcc -S code.i 生成以.s結(jié)尾的匯編文件 3、匯編 把匯編文件翻譯成二進(jìn)制的目標(biāo)文件gcc -c code.s 生成以.o結(jié)尾的目標(biāo)文件 4、鏈接 把若干個目錄文件合并成一個可執(zhí)行程序gcc a.o b.o ... 默認(rèn)生成一個a.out的可執(zhí)行程序C文件類型:
.h 頭文件 .h.gch 頭文件的編譯結(jié)果,它會被優(yōu)先使用 .c 源文件 .i 預(yù)處理文件 .s 匯編文件 .o 目標(biāo)文件 .a 靜態(tài)庫 .so 共享庫感謝關(guān)注~~會持續(xù)、定期更新
總結(jié)
以上是生活随笔為你收集整理的linux命令编译C语言程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Samsung原版44B0X的Bootl
- 下一篇: linux下软件的基本安装和卸载