如何自製靜態和動態庫

2021-09-08 10:48:30 字數 1212 閱讀 5992

目標**(object code)指電腦科學中編譯器或彙編器處理源**後所生成的**,它一般由機器**或接近於機器語言的**組成。目標檔案(object file)即存放目標**的計算機檔案,它常被稱作二進位制檔案(binaries)。目標檔案包含著機器**(可直接被計算機

**處理器執行)以及**在執行時使用的資料,如重定位資訊,如用於鏈結或除錯的程式符號(變數和函式的名字),此外還包括其他除錯資訊。[2]目標檔案是從源**檔案產生程式檔案這一過程的中間產物,鏈結器正是通過把目標檔案鏈結在一起來生成可執行檔案或庫檔案。目標檔案中唯一的要素是機器**,例如,用於嵌入式系統的目標檔案可能僅僅含有機器**。

庫有動態與靜態兩種,動態通常用.so為字尾,靜態用.a為字尾。

.代表當前目錄

下面是另一種方法,把我們製作的庫函式,直接拷貝到/usr/bin目錄下面

製作動態庫

動態庫這點和靜態庫不一樣必須使用cp命令這一行,這也進一步說明了動態庫在程式執行時是需要的。 

接下來我們在進行測試看看

發現刪除了動態庫後不能執行了!!!!,這也進一步說明了動態庫在程式執行時是需要的!!!

gcc-ctest.c

-o test.o

共有三個引數,這三個引數的位置可以相互調換的!!!每個橫線看做乙個引數

如何生成靜態庫和動態庫

對於乙個編譯型語言,編譯器工作時總要經過預處理 編譯 鏈結等幾個過程。以 c c 為例 預處理器 cpp 將每個 c cpp 檔案中 include 的標頭檔案都合併到 c cpp 檔案中,並且對其進行巨集擴充套件,由此生成數個編譯單元。一般來說每個 c cpp 檔案對應乙個編譯單元。隨後,編譯器 ...

如何生成靜態庫和動態庫

對於乙個編譯型語言,編譯器工作時總要經過預處理 編譯 鏈結等幾個過程。以 c c 為例 預處理器 cpp 將每個 c cpp 檔案中 include 的標頭檔案都合併到 c cpp 檔案中,並且對其進行巨集擴充套件,由此生成數個編譯單元。一般來說每個 c cpp 檔案對應乙個編譯單元。隨後,編譯器 ...

Linux 如何生成靜態庫和動態庫

1 linux下的庫 靜態庫和共享庫 動態庫 二者的不同點在於 被載入的時刻不同。靜態庫的 在編譯過程中已經被載入可執行程式,因此體積較大。共享庫的 是在可執行程式執行時才載入記憶體的,在編譯過程中僅簡單的引用,因此 體積較小。2 庫存在的意義 庫是別人寫好的現有的,成熟的,可以復用的 你可以使用但...