linux下生成 so檔案和 a檔案

2021-07-02 06:50:41 字數 1114 閱讀 1276

test.h

1 #ifndef _test_h_

2#define _test_h_34

void testa();

5void testb();67

#endif

test_a.cpp

1 #include 

2 #include "

test.h"3

4void testa()

5

test_b.cpp

1 #include 

2 #include "

test.h"3

4void testb()

5

生成so檔案的命令

g++ test_a.cpp test_b.cpp -fpic -shared -o libtest.so
生成.a檔案的命令

1 gcc -c test_a.cpp

2 gcc -c test_b.cpp

3 ar -r libtest.a test_a.o test_b.o

test.cpp

1 #include "

test.h"2

3int main()

4

採用動態庫編譯命令

g++ test.cpp -o test -l. -ltest
執行

export ld_library_path=./

./test

執行結果如下。

採用靜態庫編譯命令

g++ -static -o test -l. -ltest test.cpp
執行效果

靜態庫的巢狀呼叫,有時候我想做乙個自己的靜態庫,它裡面要呼叫其他靜態庫裡面的函式,經過試驗

這個好像用ar -r不行,所以就在鏈結的時候需要兩個庫檔案都包含,同時要有這乙個標頭檔案才行。。。

linux下生成 so檔案和 a檔案

1.o 就相當於windows裡的obj檔案 乙個.c或.cpp檔案對應乙個.o檔案 a 是好多個.o合在一起,用於靜態連線 即static mode,多個.a可以鏈結生成乙個exe的可執行檔案 so 是shared object,用於動態連線的,和windows的dll差不多,使用時才載入。得到了...

Linux下生成 so檔案

linux下的.so檔案即shared libraries。shared library 是程式執行時載入的庫檔案。當乙個shared library 被成功的安裝以後,之後啟動的所有程式都會自動使用最新的shared library。也就是說,生成乙個.so檔案並告訴編譯器它的位置之後,所有的需要...

linux 下生成動態庫 so並引用

動態庫的引入及減少了主 檔案的大小,同時生成的動態庫又是動態載入的,只有執行的時候才去載入,linux 下的 動態庫 so 就像windows下的 dll一樣。有關動態庫的概念自行上網搜。一下是建立及引用動態庫 test so.h ifndef test so h define test so h ...