Linux 下c的动态链接库的生成
Linux 下c的动态链接库的生成最近Google了一阵子,总结了如何制作自己的动态链接库的资料,菜鸟级别,可能有错,望指出
主要的步骤是:1 编写自己的Linux库的源文件(*.h , *.c) -->> 2 编译生成动态库 -->>使用动态库1: 编写自己的Linux库的源文件(*.h , *.c)先编写头文件#ifndef _MYP_#define _MYP_int MyP( int ) ;#endifAnalysis: 其中_MYP_在这里目的是防止头文件的重复包含和编译。这个标识可以自由命名,每个头文件的这个标识都应该是唯一的。表示的命名空间一个是头文件名全大写,前面加下划线,并把文件的"."也变成下划线,如:stdio.h#ifndef _STDIO_H#define _STDIO_H再编写有文件对应的实现功能的源文件()#include"MyP.h"int MyP(int i ){printf("i=%d\n",i);return i ;}2:编译生成动态库gcc MyP.c -fPIC -shared -o libmyp.soAnalysis:经过上面的command会生成动态库libmyp.so ,为了不需要动态加载动态库,在命令是需要加上以lib开头以.so为后缀。-fPIC表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。shared:指明编译成动态库。3: use dynamic library首先编译时使用动态库注:使用的动态库#include"MyP.h"int main(){MyP(3);return 0;}对应的文件名test.c编译command:gcc test.c -L . -l myp -o test
error while loading shared libraries的解方法在linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了: