博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C编译原理》共享库的动态加载和静态加载
阅读量:4180 次
发布时间:2019-05-26

本文共 924 字,大约阅读时间需要 3 分钟。

一、共享库的编译

1.共享库源码

lib.h
int function(void);
lib.c
#include "lib.h"#include 
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 
#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 
#include
#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

转载地址:http://ihgai.baihongyu.com/

你可能感兴趣的文章
Linux设备驱动--块设备(二)之相关结构体
查看>>
Linux设备驱动--块设备(四)之“自造请求”
查看>>
Nand Flash和Nor Flash相关知识
查看>>
NAND flash和NOR flash的区别
查看>>
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
查看>>
NOR Flash擦写和原理分析
查看>>
51单片机程序执行流程(STARTUP.A51)
查看>>
原码, 反码, 补码 详解
查看>>
Java自学第一阶段(二)- 小试牛刀
查看>>
Java自学第一阶段(三)- 万能的变量
查看>>
Java自学第一阶段(四)-万能的变量(2)
查看>>
HashMap存储原理以及与hashcode、equals方法的关系
查看>>
python3.6在windows下安装scrapy遇到的问题总结
查看>>
pycharm中打开scrapy项目,import scrapy报错问题
查看>>
scrapy爬取图片,自定义图片下载路径和图片名称
查看>>
python3下import MySQLdb出错问题
查看>>
Maven搭建SSM框架(eclipse)
查看>>
synchronized+Integer模拟火车票预售,出现的问题总结
查看>>
沉浸式过山车,感受巨蚁数字心灵的激情
查看>>
htmlunit爬取js异步加载后的页面
查看>>