(1)设计库代码
复制代码
代码如下:
[bill@billstone make_lib]$ cat pr1.c
#include <stdio.h>
int p = 2;
void print(){
printf("%p:%d\n", &p, p);
printf("This is the first dll src!\n");
}
(2)生成动态库 xxx.so
复制代码
代码如下:
[bill@billstone make_lib]$ gcc -O -fpic -shared -o xxx.so pr1.c
[bill@billstone make_lib]$ ls -l *.so
-rwxrwxr-x 1 bill bill 6592 4 月 15 15:19 xxx.so
(3)动态库的隐式调用
复制代码
代码如下:
[bill@billstone make_lib]$ cat main.c
int main()
{
print();
return 0;
}
[bill@billstone make_lib]$ gcc -o main main.c ./xxx.so
[bill@billstone make_lib]$ ./main
0x97b5d4:2
this is the first lib src!
当动态库的位置发生改变时, 程序将无法正常运行;
动态库比之静态库的好处之一则是通过更新动态库而随时升级库的内容.