gcc的知識要點:gcc的初衷是為gnu作業系統專門編寫的一款編譯器,gnu系統是徹底自由的軟體。
gcc的基本用法:
gcc hello world.c -c,只編譯,不鏈結成為可執行檔案,編譯器只是由輸入的.c的源**檔案生成.o為字尾檔案的目標檔案,通常用於編譯不包括主程式的子程式。gcc hello world.c -o hello world 把hello world.c 編譯成可執行檔案 hello world 。
-g 是產生除錯工具(gdb)所必須的符號資訊,要想對源**進行除錯,我們必須加入這個選項
-o 對程式進行優化編譯,鏈結,採用這個選項,整個源**會在編譯,鏈結過程中進行優化處理,這樣產生的可執行檔案的執行效率會提高,但是在編譯,鏈結的速度就相應的要慢一些。
預處理過程:這個過程處理巨集定義和include,並做語法檢查。
編譯過程:這個階段,生成彙編**
彙編過程:這個階段,生成目標**
鏈結過程:鏈結過程,可生成可執行**。鏈結分為兩種,一種是靜態鏈結,另一種是動態鏈結。
靜態鏈結的好處是:依賴的動態鏈結庫較少,對動態鏈結庫的版本不會敏感,具有較好的相容性;缺點是生成的程式比較大。占用記憶體大。gcc的使用口令:
gcc -o hello.c生成可執行檔案。a.out靜態庫:是在程式執行之前就已經加入到執行檔案的執行**中,成為執行程式的一部分來執行的。字尾是(.a).(點)代表當前目錄
cp -r /mnt/hgfs/share/gcc/.把gcc複製到當前目錄。
time ./hello 測試可執行檔案hello執行運算的時間。
gcc -o1 hello.c -o hello1進行一級優化
gcc -o2 hello.c -o hello2進行二級優化
gcc -w hello.c 關閉警告(-w)
gcc -wall hello.c 開啟全部警告(-wall)
mv add.c../把add.c調到上一級目錄
動態庫:是在程式啟動時載入到執行**中,字尾是(.so)
靜態庫的優點:編譯速度慢,執行速度快,可以提供多種可使用的變數,但是會使程式臃腫占用更多的記憶體,不利於公升級,但是布局好
動態庫的優點:編譯速度快,執行速度慢,公升級方便 布局差。
庫的存放:
1:/lib/ 系統庫不管是靜態庫還是動態庫都是由(.o)字尾的檔案生成的。所以先用gcc -c add.c gcc -c sub.c 生成add.o和sub.o檔案 然後建立。2:/usr/lib 程式庫
靜態庫的製作:由ar命令建立 例如:ar rcs libaddsub.a add.o sub.o 就可生成靜態庫libaddsub.a就是 (ar rcs 靜態庫名 目標檔案)。
呼叫靜態庫:gcc -o hello hello.c -laddsub編譯hello.c就會把靜態庫整合進hello.c中生成呼叫靜態庫的可執行檔案 hello
gcc hello.c -laddsub生成呼叫靜態庫的可執行檔案a.out。
通過gcc -o main main.c -l. -laddsub編譯
-l指定靜態函式庫
的位置供
查詢,注意l後面
還有'.',表示靜態函式
庫在本目錄下
查詢。-l則
指定了靜態函式
庫名,由於靜態函式
庫的命名方式是
lib***.a
,其中的
lib和
.a忽略。
根據靜態函式庫
的特性,此處刪除
libaddsub.a
後main
依然可以執行,因為靜
態庫的內容已經整合進去了。
動態庫(共享庫)的製作:gcc -shared -fpic -o libaddsub.so add.o add.o
就是(gcc -shared -fpic -o 動態庫名 目標檔案)
呼叫動態庫:gcc -o out main.c -l. -laddsub 此
時還不能立即
./out,因為
在動態函式庫
使用時,會查
找/usr/lib /lib目錄
下的動態函式庫
,而此時我們
生成的庫
不在裡邊。
這個時候有好幾
種方法可以
讓他成功執行:
最直接最
簡單的方法就是把
libaddsub.so
拉到/usr/lib
或/lib
中去。
linux作業系統命令基礎
常用指令 ls 顯示檔案或目錄 l 列出檔案詳細資訊l list a 列出當前目錄下所有檔案及目錄,包括隱藏的a all mkdir 建立目錄 p 建立目錄,若無父目錄,則建立p parent cd 切換目錄 touch 建立空檔案 echo 建立帶有內容的檔案。cat 檢視檔案內容 cp 拷貝 m...
Linux作業系統基礎命令
man help 利用方向鍵 快速調取歷史命令 ctrl a 將游標移動到行首 ctrl e 將游標移動到行尾 ctrl 將游標按照字串進行左右快速移動 ctrl u 將游標之前的內容進行剪下 ctrl k 將游標之後的內容進行剪下 ctrl w 以空格作為分隔 剪下每個字串資訊 ctrl y 將剪...
Linux作業系統基礎命令
登入使用者名稱 主機名 工作目錄 身份標識 身份表示分為 或 表示管理員,表示普通使用者 格式 命令字 選項 引數 選項 用來調控命令的執行方式,分短選項 長選項 多選項 短選項用 單個字元 長選項用 單詞 多選項用 多個單字元,部分命令不能拼接,只能分開 ctrl l 清屏 ctrl c 終止命令...