最近一直忙著學Linux下的編程,書籍主要以<<Unix環境進階編程>>為主,工具主要使用cc,gcc編譯器,gdb調試器,vim編輯器,因為不熟悉Linux環境,所以沒有使用Linux作業系統,僅下載了安裝了Cygwin,感覺入門不難,但是那些瑣碎的技巧還是要記一些的,把經常要用的羅列出來,以後好尋找.隨著學習的深入,還會逐步新增內容的.
1產生目標檔案
gcc -c sourcefile1.c sourcefile2.c或cc -c sourcefile1.c sourcefile2.c
2產生靜態連結庫(需要使用目標檔案sourcefile1.o sourcefile2.o)
ar -rc libname.a sourcefile1.o sourcefile2.o
3產生動態連結程式庫
gcc -fpic -shared -o libname.so sourcefile1.c sourcefile2.c
-fpic 使輸出的對象模組是按照可重定位地址方式產生的。
-shared指定把對應的源檔案產生對應的動態連結程式庫檔案libname.so檔案。
4使用靜態庫
分2步:1)編譯產生目標檔案 gcc -c -lDIRECTORY/libname main.c
2)產生可執行檔 gcc -o main -lDIRECTORY/libname main.o libname.a
DIRECTORY為庫所在的路徑,建議使用相對路徑
5使用動態庫
動態庫分為隱式調用和顯式調用,隱式調用和使用靜態庫差不多,只要將第2步的libname.a改成libname.so就可以了.顯式調用需要結合程式給出執行個體,暫不討論.
6偵錯工具
編譯時間需要使用-g選項來編譯器,例如:gcc -g sourcefile.c,預設產生a.out,然後輸入命令gdb a就可以調試了.
7makefile的編寫
最簡單的makefile可以用下面這個例子來表示:
Projectname:
cc -o programname sourcefile.c
clean:
rm sourcefile.o programname.out
以makefile為檔案名稱儲存後,敲make命令就可以了,再敲make clean就將sourcefile.o和programname.out刪除了.
8壓縮和解壓檔案
想要學習編程,看別人寫的代碼是必要的,所以就要從網上下載一些Linux/Unix的原始碼,這是肯定會用到的就是解壓工具了,所以tar還是很重要的,解壓一個包不是很難,基本上使用以下的例子來闡述:
tar -xvf stevens.tcpipiv1.tar.Z
9顯示檔案內容
cat命令是我常用的,後面跟檔案名稱就好了.如果一憑顯示不完,可以用管道將它輸出到more上面然後一點點往下看,就像下面這樣:cat filename | more,從這裡我才感覺到Linux真的功能強大,但他的強大在於使用的人...至少我還不太會使用,呵呵.
10查看程式的大小
使用size命令可以查看程式的text, data, bss, dec及hex的大小.
11在檔案中尋找字串
在編輯源檔案時,我們要用到更多的技巧,如果原始碼行數很多,而且檔案的數目也很多,我們不可能記住每個函數在哪個檔案中哪個位置定義,所以要用到以下的工具來進行定位,列舉一例:
grep -n main *.c
這個可以尋找出main函數的所在位置,當然可能會存在多個函數,這就需要我們根據輸出的資訊在進一步確認了.另外,選項有以下幾個,其具體含義如下所示.
-n 同時列出改詞出現在文中第幾行
-c 計算該詞出現的次數
-i 比較時不計較大小寫不同
12編輯器VIM的使用
這個說起來光簡單用法恐怕就可以用一整篇文章了,常用的命令大致如下:
":1"到第一行,冒號後面跟數字,數字是幾就到第幾行
":set cindent",設定縮排格式為C語言的縮排格式
":set number",顯示行號
"#"向前搜尋
"*"向後搜尋
"ndd"刪除當前游標位置的n行
"nyy"粘貼,n為粘貼的行數
"CTRL-R" 恢複
"/str/"搜尋字串str,再按"n"跳到下一個