您的位置:首页 > 运维架构 > Linux

Linux 下动态链接库的创建与使用

2016-07-12 13:59 465 查看
//mylib.h
#ifndef_MYLIB_H_
#define_MYLIB_H

#include<stdio.h>

voidmyFunc();

#endif

//mylib.cpp

#include"mylib.h"
voidmyFunc()
{
printf("thisis print by mylib.\n");
}

编译生成动态链接库:
gccmylib.cpp -fpic -shared -o libmylib.so
由以上命令生成动态库libmylib.so,为了不需要动态加载动态库,在命令时需以lib开头以.so为后缀。

–fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

–shared:指明编译成动态库。

使用动态链接库:
//app.cpp

#include"mylib.h"

intmain()
{
myFunc();
return0;
}
编译命令:
gccapp.cpp -o app -L . -l mylib

测试:lddapp
linux-gate.so.1=> (0xb77b7000)
libmylib.so=> not found
libc.so.6=> /lib/i386-linux-gnu/libc.so.6 (0xb75e5000)
/lib/ld-linux.so.2(0x8009e000)

现在还程序还找不到该动态链接库,需要将其复制到/lib文件夹下,使用sudo命令
sudocp libmylib.so /lib/libmylib.so

运行:./app
thisis print by mylib.

动态链接库的动态加载使用:
...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ linux