1. 程式人生 > 實用技巧 >cpp 靜態動態庫操作記錄

cpp 靜態動態庫操作記錄

...這個垃圾的切換...

1, 目錄結構

2,程式碼

main.cpp

 1 #include<iostream>
 2 #include "comp/com.h"
 3 
 4 
 5 
 6 using namespace std;
 7 
 8 
 9 int main() {
10   int c;
11   c =  add(3,5);
12   cout << c << endl;
13 }

comp/com.cpp

1 using namespace std;
2 
3 int add(int a,int b){
4   int c;
5
c = a + b; 6 return c ; 7 }

comp/com.h

1 int add(int, int);

3,命令列

a) 目錄生成動態連結(目錄comp 中執行)

g++ -fPIC -shared -o libcomp.so com.cpp // 獲得libcomp.so

b) 生成靜態連結 (目錄comp 中執行)

g++ -c com.cpp ==> ar -crv libcomp.a com.o //得到libcomp.o

c) 編譯主程式(main.cpp目錄中執行,動態庫和靜態庫同時存在g++預設選動態連結庫)

g++ -o main_static main.cpp -L comp/ -lcomp //動態庫和靜態庫同時存在時g++預設選擇動態庫,只有靜態庫時,選擇靜態庫

g++ -o main_static main.cpp -L comp/ -static -lcomp //指定選擇靜態連結庫

d) 執行

靜態編譯的 直接執行輸出檔案 ./a.out

動態編譯的cp comp/libcomp.so /usr/lib/ -v ==> ./a.out