C語言 gcc 靜態庫

2021-09-16 18:37:15 字數 1065 閱讀 9109

靜態庫libxx.a 對應 win下面的xx.lib

防止別人看到**

nm檢視靜態庫內容

假設有以下檔案

|-- fn

| |-- add.c

| `-- sub.c

|-- h

| `-- head.h

|-- lib

`-- test.c

add.c內容

int

add(

int a,

int b)

sub.c內容

int

sub(

int a,

int b)

test.c內容

#include

"head.h"

intmain

(void

)

head.h內容

#include

extern

intadd

(int a,

int b)

;extern

intsub

(int a,

int b)

;

首先編譯fn目錄下的函式檔案

gcc -c ./fn/*.c -i ./h

將編譯好的.o檔案,打包成靜態庫,靜態庫命名必須以lib開頭以.a結尾

ar rcs ./lib/libcalc.a *.o

編譯整個工程檔案,預設gcc會找標準庫,自己的庫需要指明,_l指定庫的目錄,-l指定庫的名稱.庫名會省略掉lib.a

gcc test.c -o test -i h/ -l lib/ -l calc

GCC靜態庫 動態庫

1 靜態庫 linux環境下的靜態庫的擴充套件名為 a step 1 編譯原始檔,生成可重定位目標檔案 gcc c static lib.c step 2 使用ar工具建立乙個靜態庫,或者將目標檔案加入到乙個已經存在的靜態庫中。格式 ar rcs 靜態庫名 目標檔案2 目標檔案2 目標檔案n ar ...

gcc 靜態庫和動態庫

include void print hello include include hello.h int main define hello 9999 void print hello 其中 hello.c 和 main.c 在同乙個目錄下,hello.h在上乙個目錄。先生成 o 檔案 gcc he...

gcc編譯靜態庫 動態庫

今天,乙個同事編譯靜態庫,我也趁此機會在溫習一下,先google一下,然後在自己實驗。首先,在網上抄個例子,內容如下 建靜態庫 hellos.h ifndef hello s h define hello s h void prints char str endif hellos.c include...