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