一:gcc工具鏈
編譯指令
:1. gcc test.c -o test
生產test
可執行檔案
上述編譯過程是分為四個階段進行的:
(1)預處理:
gcc-e test.c -o test.i
可以輸出
test.i
檔案中存放著
test.c
經預處理之後的**
(2)編譯:gcc-s test.i -o test.s
gcc的-s
選項,表示在程式編譯期間,在生成彙編**後,停止,
-o輸出彙編**檔案
(3)彙編:gcc-c test.s -o test.o
把組合語言變成機械二進位制語言
(4)連線:gcctest.o -o test
對於生成的
test.o
,將其與c標準輸入輸出庫進行連線,最終生成程式
test
2. ./test 執行test檔案
3. 其餘的gcc指令:
-idir
:在標頭檔案的搜尋路徑列表中新增
dir目錄
-ldir
:在庫檔案的搜尋路徑列表中新增
dir目錄
二. make和makefile
1. make
命令執行時,須要乙個
makefile
檔案,以告訴
make
命令須要怎麼樣的去編譯和鏈結程式。
2.
makefile內容的核心是一系列的規則,這些規則告訴make程式要做的事以及做這件 事所依賴的條件。規則的基本格式是:
target:dependency
(tab字元)command
target(目標): 通常是要產生的檔案的名稱
dependency(依賴): 指用來輸入從而產生目標的檔案
command(命令):是make執行的動作,乙個規則可以有多條命令,每個命令佔一行。 命令列的第乙個字元是tab。
三. gdb除錯工具
1. gdb是
gnu的除錯工具,它可以跟蹤被除錯的程式,進行設定斷 點、單步執行等操作。當程式暫停執行時,可以使用命令檢視 程式中的變數值、
cpu的暫存器值、記憶體的值以及函式呼叫棧等資訊。
2. 倍除錯的程式編譯時要加 -g ,即
gcc -g text.c -o text
gdb text 對text進行除錯
啟動後進入gdb互動介面,可以輸入gdb指令開始除錯:
list 簡寫l 列出原碼
break 簡寫b 設定斷點
run 簡寫r 從頭開始執行,在斷點處停止
continue 簡寫c 從停止處繼續執行程式
next 簡寫n 向前執行一句(不進入被呼叫函式)
step 簡寫s 向前執行一句(進入被呼叫函式)
print 簡寫p 列印變數值
quit 簡寫q 退出gdb
四. shell使用基礎
1.shell
是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。
2.shell指令碼編譯格式是固定的,都以 #!/bin/bash或#!/bin/sh
3.執行指令碼的時候,要先將指令碼檔案的屬性改為可執行的:
chmod+x filename.sh
執行指令碼的方法是:
./filename.sh
4.條件判斷命令:
test n1 -引數 n2(或 –引數 表示式)
真返回0,假返回1。
引數:-lt 小於
-le小於等於
-gt 大於
-ge 大於等於
-eq 等於
-ne 不等於
test語句的等價形式[ 1 –lt 4 ]
5.檔案測試:
-f 存在且是普通檔案
-d 存在且是目錄
-s 存在且位元組數大於0
-r 存在且可讀
-w 存在且可寫
-x 存在且可執行
如:test -d 「mydoc」
判斷mydoc是否是目錄
6. for語句
for迴圈取一列值作為輸入並對迴圈中每個值執行迴圈
for variable_name in
do...
done
for i in `seq 1 9`
doecho `expr $i \* 10`
done
或寫 echo $(expr $i \* 10)
乘號前加轉義符,與數字間要有空格。
Linux基礎學習
1.linux中沒有類似於windows中 登錄檔 這樣的二進位製表項,linux中所有軟體的配置都是通過文字檔案實現的。2.linux中命令列是提供使用者輸入命令的介面,其本身只接受輸入,然後將命令傳遞給命令編譯器。shell 是乙個程式,它在使用者和作業系統之間提供了乙個面向行的可互動介面 3....
linux基礎學習
1.檔名之前多乙個 則代表這個檔案為 隱藏檔案 2.chgrp 改變檔案所屬使用者組 chown 改變檔案所有者 chmod 改變檔案的許可權 r 4,w 2 x 1 3.檔案預設許可權 umask umask的分數值指的是 該預設值需要減掉的許可權 002表示的許可權被拿掉了2.4.檔案具有sui...
LINUX基礎學習
linux區分英文的大小寫。使用者與使用者組概念 linux是乙個提供多使用者多工的操作環境。root是最高端別的管理員,而對每乙個使用者來說各自會有自己的檔案和許可權,不同使用者之間一般不可以互相修改各自的檔案。當在linux下乙個開發團隊進行開發時,開發成員需要互相訪問團隊內某成員的檔案並修改,...