硬鏈結與軟鏈結的簡單了解,靜態庫與動態庫的生成

2021-08-21 15:48:58 字數 1363 閱讀 8844

硬鏈結

第3列的數叫硬鏈結數(有幾個檔名對應著同乙個inode,就叫硬鏈結數為幾)

當前目錄.的inode和上一級目錄home下的admin是一樣的

硬鏈結好處:兩個檔名指向同乙個索引號,指向的資料是一樣的,此時day10.txt不小!心被刪掉了,引用計數(硬鏈結數)減少1(此時不為0),系統便知道還有檔案指向這些資料,便不會把它刪掉,所以它還在。

軟鏈結

用ln -s 命令可以生成乙個軟鏈結,如下:

[root@linux236 test]# ln -s source_file softlink_file

*靜態庫

靜態庫:將所有的.o檔案打包

生成靜態庫的步驟:

1.寫原始檔,通過 gcc -c ***.c 生成目標檔案。

2.用 ar 歸檔目標檔案(ar -rc lib**.a add.o sub.o),生成靜態庫。

3.配合靜態庫,寫乙個使用靜態庫中函式的標頭檔案。

4.使用靜態庫時,在原始碼中包含對應的標頭檔案,鏈結時記得鏈結自己的庫。

在測試靜態庫時,編譯main.c :

gcc main.c -l. -l**(庫名)

上面的命令中 -l. 告訴 gcc 搜尋鏈結庫時包含當前路徑, -l** 告訴 gcc 生成可執行程式時要鏈結 lib**.a

我寫了兩個加法減法函式的原始檔,整個生成靜態庫的過程如下

在執行時可以把靜態庫刪掉,鏈結時已經把**放到了a.out裡

動態庫

windows下,一般稱為動態庫。linux下一般稱為共享庫。

動態庫:節省物理記憶體空間

此處擴充套件一下:動態庫是可執行的檔案.elf,靜態庫是不可執行的.

linux中的四種elf:

.o core(程式崩掉時產生core檔案)

.so

可執行程式

製作動態庫***(庫名lib***.so (庫檔名)

軟鏈結 硬鏈結 靜態庫 動態庫

跟原始檔沒區別,通過相同的 inode 節點訪問到檔案資料 乙個檔案別名 建立 建立硬鏈結檔案 ln tmp.txt tmp.hard 建立軟鏈結檔案 ln s tmp.txt tmp.soft 區別 刪除原始檔,硬鏈結檔案的鏈結數 1,並沒有刪除檔案,只有當 inode 0 才會徹底刪除 軟連線檔...

硬鏈結與軟鏈結

1.linux 鏈結概念 linux 鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在 linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱...

軟鏈結與硬鏈結

linux unix中有兩種鏈結,硬鏈結和軟鏈結,均由ln命令來建立。軟鏈結1ln ssource target 建立source檔案的軟鏈結target 123 456dutor dutor desktop ln s gvim.tgz gvim dutor dutor desktop ln s h...