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.
动态链接库的动态加载使用:
...
#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.
动态链接库的动态加载使用:
...
相关文章推荐
- Linux socket 初步
- 使用C++实现JNI接口需要注意的事项
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- 关于指针的一些事情