cpp 靜態動態庫操作記錄
阿新 • • 發佈:2021-01-10
...這個垃圾的切換...
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; 5c = 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