Ubuntu 动态库

来源:互联网 发布:windows开机吉他谱 编辑:程序博客网 时间:2024/06/03 16:01
  1. 创建dll.c文件,内容如下:
#include <stdio.h>void dll_fun(void){  printf("hi,sir!\n");}
  1. 创建静态库,分二步:
gcc -c -fPIC dll.c  //create dll.ogcc -shared -fPIC -o libdll.so dll.o //create libdll.so

至此,动态库创建完成。
参数-fPIC使.so文件的代码段变为真正意义上的共享,
如果不加-fPIC,则加载.so文件的代码段时,代码段引用的数据对象需要重定位。
3. 测试动态库的调用
创建main.c文件,内容如下:

#include <stdio.h> int main(void){  printf("call dll(.so)\n");  dll_fun();   return 0;}

编译命令:

gcc -o main main.c -L. -ldll

其中-L.:表示在当前目录查找库文件,如果写为:-L./lib 则表示在当前目录的lib目录下查找库文件。
-ldll:表示查找的动态库名字为dll,生成的动态库名字为 libdll.so,链接时需要去头去尾,去掉lib和.so,剩下的dll即为要查找的名字。

  1. 运行程序:
./main

结果输出:
call dll(.so)
hi,sir!