示例:将如下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命令可以列出程序连接的动态库的信息

动态库加载失败的解决办法:在环境变量中配置动态库的路径







优点
缺点
