示例:将如下shape-test.cpp 文件编译成静态库
head.h
#pragma once
#include
#include extern int add(int x, int y);extern int mutil(int x, int y);extern int subtract(int x, int y);extern int div(int x, int y);
add.cpp
#include "head.h"int add(int x, int y)
{return x + y;
}
subtract.cpp
#include "head.h"int subtract(int x, int y)
{return x * y;
}
mutil.cpp
#include "head.h"int subtract(int x, int y)
{return x * y;
}
div.cpp
#include "head.h"int div(int x, int y)
{return x / y;
}
main.cpp
#include
#include "head.h"int main()
{int a = 20;int b = 12;printf("a = %,b = %d\n", a, b);printf("a + %,b = %d\n", add(a,b));printf("a - %,b = %d\n", mutil(a, b));printf("a * %,b = %d\n", subtract(a, b));printf("a / %,b = %d\n", div(a, b));
}
1.gcc获得.o文件
gcc -c add.cpp div.cpp main.cpp mutil.cpp
2.使用ar rcs 命令创建静态库
ar rcs libcalc.a add.o mutil.o div.o subtract.o
1.编译主程序文件
gcc main.cpp -lstdc++ -o app -I ./include/ -l calc -L./lib-o:生成目标文件
-I:头文件目录
-l: 库文件名
-L./lib:到当前目录./lib下找依赖静态库
2.执行主程序文件
./app
1.gcc获得.o文件
gcc -lstdc++ -c -fpic add.cpp div.cpp mutil.cpp subtract.cpp
2.gcc 得到动态库
gcc -shared add.o mutil.o div.o subtract.o -o libcalc.so
1.编译主程序文件
gcc -lstdc++ main.cpp -o main -I ./include/ -L lib -l calc
2.执行主程序文件
静态库和动态库工作原理:
使用ldd命令可以列出程序连接的动态库的信息
动态库加载失败的解决办法:在环境变量中配置动态库的路径
优点
缺点