1. 程式人生 > >Linux 複習筆記

Linux 複習筆記

Linux 常用基本命令:

檔案 —— cp  rm  mv  tail  mv  more  find  grep

程序 —— ps  kill  jobs  top

管理 —— useradd  userdel  passwd  shutdown  init  halt  reboot

網路 —— ping  tcpdump  netstat

/*************************************************************************************/

目錄結構:

/boot  系統啟動所需檔案、核心檔案

/etc     系統配置

/bin     二進位制可執行檔案

/lib      庫檔案

/mnt    臨時掛載點

/dev    裝置檔案

/home 普通使用者家目錄

/root    管理員目錄

/proc    虛擬檔案系統、程序資訊

/*************************************************************************************/

檔案型別:

-   普通檔案

d  目錄檔案

l    符號連結(類似快捷方式)

b   塊裝置檔案 / 二進位制檔案

c   字元裝置檔案

p   命名管道檔案

s   套接字檔案

改變檔案許可權  chmod   r(4)  w(2)  x(1)

chmod  u+x   file

chmod  777   file

/*************************************************************************************/

gcc / g++:

工具集合的入口,其中會呼叫其他工具

編譯 .c 檔案


以 gcc 編譯  --  按照C語言編譯(以 nm 檢視邏輯地址偏移量,函式簽名為函式名)

以 g++編譯  --  按照Cpp編譯(函式簽名為_Z3addii)

編譯 .cpp 檔案

以 gcc 編譯  --  按照 Cpp 解析(產生連結錯誤,因為 gcc 不會主動連結c++標準庫,需要手動指定)


以 g++ 編譯  --  按照 Cpp 解析,通過 ldd 命令檢視所依賴的庫


/* gcc不僅僅能編譯 .c 檔案,同時也能編譯 .cpp 檔案;但C與C++混合編譯時應該使用 g++ 來連結,否則會因為C和C++的編譯連結符號不同而連結失敗 */

/*****************************************************1********************************/

gdb除錯:

l  列出程式碼

s  進入函式

finish  跳出

n  執行下一步

b  設定斷點

p/display  檢視變數

x  檢視記憶體

例:x/<n/f/u> <addr>

n表示顯示記憶體的長度——即當前地址向後顯示幾個地址的長度;

f表示顯示的格式——字串s、十六進位制x、十進位制d;

u表示將多少位元組當做一個值取出來——預設4byte,b單位元組、h雙位元組、w四位元組、g八位元組

core除錯(檢視函式崩潰點 / 段錯誤)

ulimit  -c  ulimited  將core檔案大小設為無限大

bt  檢視函式呼叫棧

/*************************************************************************************/

庫:

* 預先編譯好的方法的集合

共享庫(動態庫):

gcc -shared -fPIC -o add.o

執行程式中動態裝載庫,呼叫其中的方法

靜態庫:

ar  crv libadd.a add.o

編譯完成後將庫中包含的所有方法都嵌入程式中

通常將原始檔編譯成動態/靜態庫後,使同一個檔案分別連結動態/靜態庫,連結靜態庫的檔案大小會比連結靜態庫的檔案要大一些(假設庫中包含大量方法,且程式只調用了部分方法);

* 用nm檢視可執行檔案中的函式地址

// TODO

動態庫 / 靜態庫的特點

連結 / 裝載的過程

/*************************************************************************************/

程序 / 執行緒:

/*************************************************************************************/

網路: