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

原文地址:https://www.cnblogs.com/eiguleo/p/14258934.html