linux 动态库的创建与使用

我使用的最简单的例子,运行一遍基本就熟悉了。

一、动态库的创建

创建一个hello.c为源文件的动态库

#include <stdlib.h>#include <stdio.h>void hello(void){printf("Hello World\n");}

编译:gcc -shared -fpic -o libhello.so hello.c

-shared :生成一个共享目标文件, 他可以和其他目标文件连接产生可执行文件. 只有部分系统支持该选项。

-fPIC:如果支持这种目标机, 编译器就输出位置无关目标码. 适用于动态连接(dynamiclinking),即使分支需要大范围转移。

-fpic :如果支持这种目标机, 编译器就生成位置无关目标码. 适用于共享库(sharedlibrary)。

二、动态库的使用

创建一个名为test.c的测试文件

#include <stdlib.h>#include <stdio.h>#include <stdio.h>int main(int argc, char **argv){hello();return 0;}

编译前添加下环境变量:export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

编译:gcc -o test test.c -L. -lhello

-L.:表示要连接的库在当前目录中。

编译好后:ldd test

会发现全都能链接上,如果不添加环境变量会发现hello这个库并没有链接上。

心中有愿望一定要去闯,努力实现最初的梦想,

linux 动态库的创建与使用

相关文章:

你感兴趣的文章:

标签云: