1.演示代码
add.cpp
int add(int a, int b)
{
return a + b;
}
main.cpp
#include<stdio.h>
int add(int a, int b);
int main()
{
printf("%d\n", add(1,2));
return 0;
}
2.静态库
$ gcc -c -o add.o add.cpp
$ ar -r libadd.a add.o
$ gcc -o main -L. -ladd main.cpp
$ ./main
3.动态库
$ gcc -shared -fPIC -o libadd.so add.cpp
$ gcc -o main -L. -ladd main.cpp
$ ./main
我对动态库的一个理解是:
第一次编译时需要libadd.so参与编译
而第一次编完后,如果main.cpp不改动,add.cpp改动,那么不需要重新编译整个main,只需要重新编译libadd.so,替换原来的libadd.so即可运行main。
4.备注
鉴于链接静态库和动态库的命令是一样的,系统会优先链接动态库。