Linux程式設計01 開發工具和開發平台

2021-07-28 13:34:58 字數 3206 閱讀 3177

rz和sz是linux同windows進行zmodem檔案傳輸的命令列工具。

sz命令利用zmodem協議來從linux伺服器傳送檔案到本地,一次可以傳送乙個或者多個檔案

rz命令從本地上傳到linux伺服器。

要使用rz和sz命令需要檢視是否 有lrzsz軟體包。

如果沒有則需要利用yum進行安裝

快捷鍵:複製命令:ctrl+insert,貼上命令:shift+insert

預處理階段。去掉注釋,進行巨集替換(#define 相關),標頭檔案(#include)包含等工作。

gcc  -e test.c -o test.i

編譯階段。編譯器將文字檔案.i翻譯成文字檔案test.s,他包含乙個組合語言。組合語言程式中的每一條語句都以一種標準的文字格式確切的描述了一條低階機器語言指令。

它可以為不同的高階語言的不同編譯器提供通用的輸出語言。

gcc -s test.o -o test.s

彙編階段。彙編器將.s翻譯成機器語言指令,吧這些指令打包成一種叫做可重定位目標程式的格式,並將結果儲存在目標檔案test.o中。

gcc -c test.c -o test.o    

鏈結階段。包含各函式庫的入口,得到可執行**。

gcc  test.c -o test.o    

.c   c源**

.c  .cc c++源**

.h  標頭檔案

優化:目標是使**效能更有,去掉冗餘**。

-o(0/1/2/3)

gdb除錯:-g(0/1/2/3)

提示警告:-wall

將警告當成錯誤:-werror

在命令中指定巨集:-d

指定標頭檔案位置:-i

使用c版本:-std=c99等等

1.系統定義的標頭檔案路徑:

/usr/include

/usr/local/include

/usr/target/include

庫檔案:

/lib

檢視庫檔案:ldd 

ldd ./test

2.  編譯時預設鏈結 c 庫,如果要全用其它的庫,編譯時要用-l

例如:gcc o test test.c –lm -lc

其中m表示math庫,c表示c函式庫

3.命令列引數

選項:-l -a -i

如果命令列的選項很多,怎麼來提取這些選項呢?不需要我們知道命令列引數的順序。此時應該首先提取命令工行引數列表。

getopt:短選項,只有乙個字元

getlongopt:長選項,乙個字串

#include

int getopt(int argc, char * const argv, const char *optstring); 

一下全域性變數配合getopt函式

extern char *optarg;

extern int optind;

extern int optopt;

extern int opterr;

實際上,在命令列中,可以支援這樣命令輸入的資訊:

選項:乙個選項一般完成不同的功能的操作。

引數:在執行相應選項功能操作時輸入的資訊。

-a:選項:表示所有。

-h host_id: h 就是乙個選項,但 host_id 實際上是乙個 ip,也就是 h 的引數。

為了識別命令列的輸入資訊,第 1 個引數為 main 的 argc,第 2 個引數為 main 提供的 argv,getopt

函式第三個引數約定:

(1)如果就是乙個字元,表示某個選項。

(2)如果乙個字元後有 1 個冒號,表示選項後面一定要跟乙個引數。引數可以緊跟選項或者與選

項相隔乙個空格。

(3)如果乙個字元後有 2 個冒號,表示選項後面可有有乙個引數,也可以沒有引數,在選項後的

引數一定不能跟它以空格間隔。

例如 getopt 函式第三個引數為以下值:

「ab:c::d::」

a 後面 沒有冒號,是乙個選項。

b 後面有冒號,其後的內容一定要有理解為引數。

c 和 d 雙冒號,其後的內容可以有,也可以沒有,但如果有,則這個引數一定堅挨著。

因此如下:

./getopt –a –b host –chello –d world

具體 getopt 怎麼來解釋我們的選項和引數。

每成功執行一次,將返回當前的乙個選項。並且

extern char *optarg; //指向下乙個要掃瞄的引數。

extern int optind; //索引為下乙個要處理的指標的下標。

extern int optopt; //用於儲存可能的錯誤或不可知的資訊

extern int opterr; //opterr== 0,不將錯誤輸出的標準錯誤輸出裝置。

長選項:這個選項由乙個字串組成,在選項很多的時候更容易記憶。getopt_long extern char *optarg; extern int optind, opterr, optopt; #include int getopt_long(int argc,     char * const argv, const char *optstring, //當前支援的短選項列表,同 getopt const struct option *longopts, //長選項列表資訊 int *longindex); struct option ; 

例如期望當前程序支援以下選項方式:

短選項 長選項

-h --help

-o filename --output filename

-v --version

第三個引數:

ho:v

第四個引數

strcut option my_option=

, , }

要求:寫乙個命令列選項解析的程式。支援以下功能:

(a) -a 選項(--all 長選項),後面可以跟引數

(b)-d 選項(--dir 長選項),後面不跟引數

(c)-h 選項(--help 長選項),後面不跟引數

(d)-o 選項(--output 長選項),後面必須跟乙個引數

《Linux程式設計》 開發工具

一 多個原始檔帶來的問題 二 make命令和makefile 1 makefile的語法 1 makefile檔案由一組依賴關係和規則組成。2 make命令會會根據makefile檔案來確定目標檔案的建立順序以及正確的規則呼叫順序。2 make命令的選項和引數 1 make程式選項 i k 讓mak...

Linux開發工具

linux開發工具 vim gcc gdb make git github 文字編輯器 vim 功能最強大 1 使用 三種模式 命令列模式 插入模式 底行模式 vim 空格 檔名 例如vim hello.c 此時是命令列模式 無法插入資料 需要進入插入模式 按i或者a 退出插入模式 按esc 切換到...

Linux開發工具 gdb和make

gdb主要有以下幾個方面的功能 1 啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2 可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3 當程式被停住時,可以檢查此時你的程式中所發生的事。4 你可以改變你的程式,將乙個bug產生的影響修正從而測試其他bug。進入gdb...