linux下动态链接库的使用
2014-04-02 00:43
411 查看
(1)gcc -c -fpic add.c sub.c
(2)gcc -shared add.c sub.c -o libmath.so
(3)gcc main.c -ldl
就可以产生动态链接的结果了
让我写下使用动态链接库的几个函数吧
void * dlopen(const char *filename, int flag);
filename 是动态链接库的名字
flag的值是
RTLD_LAZY 等到共享库的使用时才加载
RTLD_NOW 立即加载
成功返回共享句柄 ,失败返回NULL
void *dlsym(void * handle, const char * symbol)
从共享句柄中查找处函数名
int dlclost(void *handle)
关闭共享句柄
char *dlerror(void);
返回错误信息的字符串,没有错误信息返回NULL
add.c
int add(int a,int b){
return a + b;
}
sub.c
int sub(int a,int b){
return a - b;
}
main.c
#include<stdio.h>
#include<dlfcn.h>
typedef int(*FUN)(int ,int );
int main()
{
void *handle = dlopen("./libmath.so",RTLD_NOW);
if (!handle){
printf("error %s\n",dlerror());
return -1;
}
FUN add = (FUN) dlsym(handle,"add");
if (!add){
printf("error %s\n",dlerror());
return -1;
}
FUN sub = (FUN) dlsym(handle,"sub");
if (!sub){
printf("error %s\n",dlerror());
return -1;
}
printf("1 + 5 = %d\n",add(1,5));
printf("3 - 10 = %d\n",sub(3,10));
dlclose(handle);
return 0;
}
(2)gcc -shared add.c sub.c -o libmath.so
(3)gcc main.c -ldl
就可以产生动态链接的结果了
让我写下使用动态链接库的几个函数吧
void * dlopen(const char *filename, int flag);
filename 是动态链接库的名字
flag的值是
RTLD_LAZY 等到共享库的使用时才加载
RTLD_NOW 立即加载
成功返回共享句柄 ,失败返回NULL
void *dlsym(void * handle, const char * symbol)
从共享句柄中查找处函数名
int dlclost(void *handle)
关闭共享句柄
char *dlerror(void);
返回错误信息的字符串,没有错误信息返回NULL
add.c
int add(int a,int b){
return a + b;
}
sub.c
int sub(int a,int b){
return a - b;
}
main.c
#include<stdio.h>
#include<dlfcn.h>
typedef int(*FUN)(int ,int );
int main()
{
void *handle = dlopen("./libmath.so",RTLD_NOW);
if (!handle){
printf("error %s\n",dlerror());
return -1;
}
FUN add = (FUN) dlsym(handle,"add");
if (!add){
printf("error %s\n",dlerror());
return -1;
}
FUN sub = (FUN) dlsym(handle,"sub");
if (!sub){
printf("error %s\n",dlerror());
return -1;
}
printf("1 + 5 = %d\n",add(1,5));
printf("3 - 10 = %d\n",sub(3,10));
dlclose(handle);
return 0;
}
相关文章推荐
- ubuntu下动态链接库的编译和使用实例 分类: arm-linux-Ubuntu 2013-07-22 16:29 272人阅读 评论(0) 收藏
- Linux静态和动态链接库使用实例
- LINUX系统中动态链接库的创建与使用
- qt 动态链接库(.so)使用举例(linux)
- 在linux中使用cmake构建共享库(动态链接库)
- (转)LINUX系统中动态链接库的创建和使用
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror【zt】
- Linux环境下使用eclipse开发C++动态链接库程序
- LINUX系统中动态链接库的创建与使用
- c语言起步(2):Linux动态链接库的使用
- linux动态链接库编写和使用
- Linux下使用gcc进行静态编译和使用动态链接库编译
- linux动态链接库编写和使用
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
- Linux中C++编译、使用动态链接库
- Linux 动态链接库(.so)的使用
- Linux静态/动态链接库的创建和使用
- Linux 下 动态链接库 .so 的生成和使用
- Linux平台下使用JNI(C动态链接库)的一点经验