[linux] linux知識積累(不斷更新中…)

1、vim知識linux

f(find)命令也能夠用於移動,fx將找到光標後第一個爲x的字符,3fd將找到第三個爲d的字符。vim

D 刪除當前字符至行尾。D=d$調試

:split或new 打開一個新窗口,光標停在頂層的窗口上編譯器

:split file或:new file 用新窗口打開文件it

 

2、如何替換搜索第二個match的字符編譯

sed –i ‘s/xxx/yyy/2’filetest

 

3、gcc的知識變量

選項-cgcc

用法:#gcc-c test.s擴展

做用:將彙編輸出文件test.s編譯輸出test.o文件。

 

無選項連接

用法:#gcctest.o -o test

做用:將編譯輸出文件test.o連接成最終可執行文件test。

 

分別編譯各個源文件,以後對編譯後輸出的目標文件連接。

用法:

#gcc-c testfun.c //將testfun.c編譯成testfun.o

#gcc-c test.c //將test.c編譯成test.o

#gcc-o testfun.o test.o -o test //將testfun.o和test.o連接成test

 

頭文件

gcc在編譯時怎麼去尋找所須要的頭文件:
※因此headerfile的搜尋會從-I開始
※而後找gcc的環境變量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找內定目錄
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

 

庫文件
編譯的時候:
※gcc會去找-L
※再找gcc的環境變量LIBRARY_PATH
※再找內定目錄/lib/usr/lib /usr/local/lib這是當初compilegcc時寫在程式內的

 

-Dmacro
至關於C語言中的#definemacro
-Dmacro=defn
至關於C語言中的#definemacro=defn
-Umacro
至關於C語言中的#undefmacro
-undef
取消對任何非標準宏的定義

-Idir
在你是用#include"file"的時候,gcc/g++會先在當前目錄查找你所制定的頭文件,如
果沒有找到,他回到缺省的頭文件目錄找,若是使用-I制定了目錄,他
回先在你所制定的目錄查找,而後再按常規的順序去找.
對於#include<file>,gcc/g++會到-I制定的目錄查找,查找不到,而後將到系統的缺
省的頭文件目錄查找
-I-
就是取消前一個參數的功能,因此通常在-Idir以後使用

-g
只是編譯器,在編譯的時候,產生調試信息。

-static
此選項將禁止使用動態庫,因此,編譯出來的東西,通常都很大,也不須要什麼
動態鏈接庫,就能夠運行.

-share
此選項將盡可能使用動態庫,因此生成文件比較小,可是須要系統由動態庫.

-w不生成任何警告信息。
-Wall生成全部警告信息。

不管靜態庫,仍是動態庫,都是由.o文件建立的。

靜態庫文件名的命名規範是以lib爲前綴,緊接着跟靜態庫名,擴展名爲.a。例如:咱們將建立的靜態庫名爲myhello,則靜態庫文件名就是libmyhello.a。在建立和使用靜態庫時,須要注意這點。建立靜態庫用ar命令。

       在系統提示符下鍵入如下命令將建立靜態庫文件libmyhello.a。

#ar cr libmyhello.a hello.o

#gcc -o hello main.c -L. –lmyhello

 

動態庫文件名命名規範和靜態庫文件名命名規範相似,也是在動態庫名增長前綴lib,但其文件擴展名爲.so。例如:咱們將建立的動態庫名爲myhello,則動態庫文件名就是libmyhello.so。用gcc來建立動態庫。

在系統提示符下鍵入如下命令獲得動態庫文件libmyhello.so。

#gcc -shared -fPCI -o libmyhello.so hello.o

 

4、MakeFile

相關文章
相關標籤/搜索