LINUX下編程工具常見用法小結

來源:互聯網
上載者:User

今天晚上把LINUX下面的編程相關的工具熟悉了一下,主要有VI,Emacs,GCC,GDB,Makefile,autotools。初涉
LINUX,上述工具其實任取一個都不是一時半會能整精熟的,但是往往每一種工具都有一些使用頻率高達70%的命令。練習了一晚,對常見用法做個小結,鞏
固記憶。

一,VI:常用的原始碼編輯命令。

vi hello.c 在目前的目錄下產生hello.c,並進入命令模式

在命令模式下
,不能輸入,可以完成刪除,複製,粘貼等操作。

1)按i 或a或o進入插入模式,可以鍵入字元,一般用i; a與o稍有不同。

2)鍵dd刪除游標所在行

3)數字(n)+dd刪除游標開始向下n行

4)數字(n)+yy複製游標開始向下n行

5) p 粘貼到游標處

6)u 撤消上次操作

在插入模式下,按ESC進入底行模式,主要進行存檔和退出之類的操作

1) :wq 最常用,儲存並退出

2):w [filename] 儲存或另存

3):q! 強退出VI

二 gcc常見用法:

1)gcc -E hello.c -o hello.i   //預先處理

2)gcc -S hello.i -o hello.s  //編譯成組合語言檔案

3)gcc -c hello.s -o hello.o  //彙編成目標代碼

4)gcc -c hello.c -o hello.o  //直接產生目標代碼檔案<最常用>

5)gcc  hello.c -o hello       //直接產生可執行檔

6)gcc hello1.o hello2.o -o hello  //連結產生可執行檔<最常用>

常見選項

1) -g  產生GDB調試資訊,用GDB工具此項必有

2) -I dir 編譯過程中包括指定目錄下的標頭檔

3) -L dir 可能需要到dir處連結庫檔案

4) -llibrary 連結動態libaray庫。通常不帶庫名的前三個字母(lib),如 -lhello表示連結libhello.so動態庫  

5)-static 連結靜態庫

6) -Wall 允許所有有用的警告

7) -O (-O2或-O3)進行代碼最佳化(分三級) ,一般不用在調試階段

三 Gdb調試常見用法

gdb hello 進入調試 。編譯時間一定帶-g選項。

常用操作:

1) l (list) 查看原始碼

2) b(breakpoint) n :在第n 行設定斷點

3) r (run) 運行

4) n(next) 逐步執行,不進入函數內部,相當於VC下F10

5) s(step) 逐步執行,進入函數內部,相當於F11

6) c(contiue) 繼續執行,從當前運行處到下一個斷點或者程式結束。

7) p var :查看變數var的當前值 

8)finish 運行到程式結束

跟斷點相關的有用命令

1)info b 查看所有設定的斷點的相關資訊

2) b function 在function函數所在行設定斷點

3) b 行數或函數名 if 運算式     滿足運算式時運行中斷 <感覺比較重要>

4) delete [斷點號] 刪除

5)disable [斷點號] 禁用

6)enable[斷點號]啟用

若不帶斷點號,則命令對所有斷點號用效,斷點號可用info b得到。

7)ignore [斷點號] N  忽略斷點N次,對迴圈一類的程式有用。

查看運行過程中變數的有用命令

print 運算式或變數

display 運算式 ,聽說能自動顯示對應運算式內容 (還沒試過)

修改變數命令

set var=value 設定變數值。

四 Makefile編寫
         

用於自動編譯產生目標或可執行檔,便於維護軟體工程的升級修改等。

基本格式
 :

target : dependency_files

command

如: 

hello.o: hello.c hello.h

        gcc -c hello.c -o hello.o

Makefile變數

如:

OBJS=hello1.o hello2.o

CFLAGS=-Wall -O -g

CC=gcc

hello:$(OBJS)

         $(CC)  $(OBJS) -o hello

hello1.o:hello1.h hello1.c

         $(CC)   $(CFLAGS) -c hello1.c -o hello1.o 

hello2.o:hello2.h hello2.c

          $(CC)   $(CFLAGS) -c hello2.c -o hello2.o 

也可以用其隱式規則
,則hello1.o,hello2.o的產生均不用顯示寫出,對每個*.o目標代碼的產生自動套用下列規則:

*.o:*.c *.h

        $(CC) $(CFLAGS) -c  *.c  -o  *.o

自動變數的使用

$^: 表示所有的不重複依賴檔案

$<:    第一個依賴檔案

$@:目標檔案的全名

使用模式規則

%.o:%.c

        $(CC) $(CFLAGS) -c $< -o $@

Make 命令:

make 目標名 產生目標

make    產生第一個目標。

五 使用autotools :

自動產生Makefile檔案

1) 運行autoscan dir 或在目前的目錄下運行autoscan 。產生configure.scan

2)編輯configure.scan  添加宏:AM_INIT_AUTOMAKE(可執行檔名,版本號碼)

更名為configure.in

3)運行aclocal 得到aclocal.m4

4)運行autoconf 產生configure可執行檔

5)運行autoheader 負責產生config.h.in檔案  //此步不算重要。

6)建立並編輯Makefile.am檔案:

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=hello    (此處是可執行檔)

hello_SOURCES=hello.c hello.h   (此處是依賴檔案)

儲存

7)運行automake 將Makefile.am 產生Makefile.in

8)運行configure可執行檔,將Makefile.in產生Makefile

9)運行make 即可產生hello

網上搜得其流程圖如下:


 
autotools 產生的Makefile主要功能

1.make [all] 產生可執行檔

2 make install 產生可執行檔,並安裝到系統目錄如/usr/local/bin下。

3 make clean  清除之前編譯產生的所有可執行檔及目標檔案*.o

4 make dist     將程式與文檔打包供發布

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.