《C编译原理》共享库的动态加载和静态加载
来源:互联网 发布:python抓取手机号 编辑:程序博客网 时间:2024/05/18 22:46
一、共享库的编译
1.共享库源码
lib.hint function(void);lib.c
#include "lib.h"#include <stdio.h>int function(void){ printf("TK--------->>>>this is sharelib function\n");}2.编译
gcc -shared -fPIC -o libfunc.so lib.c生成libfunc.so
二、共享库的静态装载
1.测试用例
main.c
#include <stdio.h>#include "lib.h"int main(){ int a = function();}
2.编译
gcc -o main main.c -L. -lfunc
3.添加环境变量
vi /home/tankai/.bashrc
export LD_LIBRARY_PATH+=:/home/lianxi/share/static
即时生效:
source /home/tankai/.bashrc
三、共享库的动态装载
1.测试用例
main.c
#include <stdio.h>#include <dlfcn.h> #define PATH "../static/libfunc.so"void *handle = NULL;int (*test) (void);int main(){ handle = dlopen(PATH, RTLD_NOW|RTLD_GLOBAL); if(handle == NULL){ printf("dlopen:%s\n",dlerror); } dlerror(); test = (int(*)(int))dlsym(handle,"function"); if(test == NULL){ printf("dlsym:%s\n",dlerror()); dlclose(handle); } int a = test(); dlclose(handle);}
2.编译
gcc -o main main.c -L. -ldl
- 《C编译原理》共享库的动态加载和静态加载
- 静态库、共享库和动态加载库
- 动态库的动态加载和静态加载
- Unix/Linux下的动态库和静态库、动态加载共享库
- 静态库,共享库,动态加载库
- 静态库、共享库、动态加载库
- 静态库,共享库,动态加载库,
- 静态库,共享库,动态加载库
- DLL的静态加载和动态加载
- FragMent的静态加载和动态加载
- 动态库DLL加载方式-静态加载和动态加载
- 动态库DLL加载方式-静态加载和动态加载
- 动态库DLL加载方式-静态加载和动态加载
- 动态加载和静态加载及其编译步骤
- 动态加载和静态加载
- 关于 动态库的编译和加载
- Day23、环境变量、静态库和共享使用库(动态库)的创建和使用、动态加载链接
- 交叉编译环境下静态库动态库的加载
- mysql 竖表变横表 例子
- Android中ViewFlipper详解
- Oracle数据库优化方案
- Suse中hosts文件设置导致jboss无法启动
- 排序_Shell_Sort(希尔排序)更正版
- 《C编译原理》共享库的动态加载和静态加载
- 借鉴:3种东西不要放在数据库中
- RMQ问题
- MySQL索引bug
- COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM .
- http://www.bitsucker.com/archives/7
- 可变字符串函数 StringBuffer的应用
- C++实现委托
- Java中什么时候使用extends,什么时候使用implements?