Mac下静态库和动态库的创建和使用

来源:互联网 发布:真牛皮包淘宝网 编辑:程序博客网 时间:2024/06/06 02:29

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.备注
鉴于链接静态库和动态库的命令是一样的,系统会优先链接动态库。

0 0