總結(jié):gcc編譯器 - 預(yù)處理,編譯,匯編,連接
預(yù)處理的指令 - 主要包括:
1.include 包括一個文件,一般都是頭文件
2.define 定義宏變量或是宏函數(shù)
3.條件編譯 #if #elif #else #endif #ifdef #ifndef
#pragma的三種方法
#pragma GCC dependcy
#pragma GCC poison
#pragma pack(整數(shù))
環(huán)境變量 - 用命令的方式如何設(shè)置環(huán)境變量
export 環(huán)境變量名 = 環(huán)境變量值
詳細(xì)筆記如下:
gcc編譯器(區(qū)分大小寫)
gcc - c:只編譯不連接,生成.o文件
gcc - E:只做預(yù)處理,其他都不做
gcc? -S生產(chǎn)匯編文件 生成.s文件
gcc - o:修改目標(biāo)文件名
gcc:編譯+鏈接 生產(chǎn)可執(zhí)行文件。默認(rèn)是a.out
gcc - Wall 生產(chǎn)所有的警告信息(提示代碼質(zhì)量,少警告)
C程序的過程(hell.c到a.out)
1.預(yù)處理 針對所有的指令(以#開頭的)把指令換成純c語法
2.編譯? 檢查一些錯誤,進行編譯(狹義上的編譯)
3 匯編 把高級語言轉(zhuǎn)成匯編
4 連接 把所有的資源打包生產(chǎn)可執(zhí)行文件
注:通常我們把預(yù)處理,編譯和匯編通稱為編譯
計算機語言包括,機器語言-匯編語-高級語言,我們學(xué)的都是高級語言
C程序員會寫.c文件(源文件)和.h文件(頭文件),各種聲明和定義都是寫在頭文件中,各種實現(xiàn)和賦值都是寫在.c文件中;比如全局變量的聲明可以寫在頭文件中,函數(shù)的原型聲明寫在頭文件中,結(jié)構(gòu)的聲明,宏的定義都是寫在頭文件中,變量的賦值必須在源文件中。函數(shù)的實現(xiàn)(代碼)必須在源文件中
注:頭文件中的內(nèi)容遲早會被源文件所包含和使用,因此寫在頭文件中的內(nèi)容都可以直接寫在原文件中。頭文件的意義在于可以被多個源文件同時使用。
頭文件一般都是按以下格式:(防止重復(fù)導(dǎo)入的固定格式)
#ifndef name
#define name
...
#endif
##用于連接宏內(nèi)兩個字符串 #undef 刪除宏
#pragma 可以給程序加一些額外的附加功能,介紹三種:
#pragma GCC dependency 文件名
-就是把當(dāng)前的文件和指定文件之間建立起依賴關(guān)系,如果當(dāng)前文件最后修改時間比指定文件要新的話就沒問題,否則就產(chǎn)生警告
現(xiàn)在基本都用版本控制軟件 解決時間問題
#pramge GCC poison 標(biāo)識符或關(guān)鍵字 禁止使用
就是把后面的標(biāo)識符或關(guān)鍵字 禁止使用
#pragma pack(數(shù)字)
針對結(jié)構(gòu)體的對齊補齊
系統(tǒng)預(yù)定宏
每種操作系統(tǒng)都有環(huán)境變量,環(huán)境變量是一系列的變量。系統(tǒng)在啟動時,會把一些常用的數(shù)據(jù)放入內(nèi)存,其中有一部分就是環(huán)境變量
程序運行的必備條件是:CPU負(fù)責(zé)運算,執(zhí)行各種指令,但是CPU不負(fù)責(zé)數(shù)據(jù)的儲存,數(shù)據(jù)的存儲是由內(nèi)存或是硬件上的文件負(fù)責(zé),CPU可以直接訪問內(nèi)存,但不能直接訪問硬盤上的文件,因此硬盤上的文件必須先進入內(nèi)存后才能被程序使用,內(nèi)存中的數(shù)據(jù),一旦關(guān)機就會消失(通常意義上的),而硬盤上文件中的數(shù)據(jù)會永久存在。常用的環(huán)境變量:
PATH -系統(tǒng)路徑,一般情況下,文件都必須帶上路徑才有效,存在PATH中的路徑,可以省略不寫
配置環(huán)境變量可以用代碼和命令實現(xiàn)
命令的實現(xiàn)方式:在bash下(前面帶$),用命令:
export PATH=$PATH:.
就把.加入了PATH中
可以用echo $PATH 查看當(dāng)前環(huán)境變量PATH的值
想要永久生效,必須把export PATH=.:$PATH寫入系統(tǒng)文件vi/home/wuwenjun.bashrc
然后重啟就能生效
Unix和linux操作系統(tǒng)都是由 內(nèi)核和shell組成.直接操作內(nèi)核不方便也不安全,shell就是用戶和內(nèi)核的溝通橋梁,用戶操作shell,shell傳遞給內(nèi)核完成功能。UNIX系統(tǒng)常用的SHELL有以下三種:
shell-最早的SHELL,但不是很好用,
bash-是shell的增強版,目前應(yīng)用最廣
csh-是按c程序員的習(xí)慣寫的Shell
目前大家的機器都是bash
在終端 輸入 echo $SHELL 就會看到/bin/bash
系統(tǒng)的頭文件無需指定位置,自定義的頭文件如何定位
1.用""中加目錄的方式可以找到,比如:“./test.h"
2.gcc xx.h -I放進當(dāng)前目錄
3.配置環(huán)境變量CPATH,把頭文件所在的目錄放入CPATH
export CPATH=.