共享库的生成步骤:
1.编写源程序 add.c 保存退出
2.编译源程序,生成.o文件。
gcc -c -fpic add.c(通过测试不写-fpic也行)
3.生成共享库文件(.so)
gcc -shared add.o -olib名字.so
也需要提供头文件
共享库的使用步骤:
使用步骤 与 静态库基本相同。
注:共享库的链接方式和静态库一样,但在运行时需要额外配置环境变量LD_LIBRARY_PATH,否则就找不到库文件。
export LD_LIBRARY_PATH=.
ldd命令可以查看共享库的调用关系。
共享库还有一种特殊的使用方式,就是像打开一个文件一样的使用
步骤:
1.打开一个共享库文件。dlopen()
2.在打开的共享库文件中获取一个函数。dlsym()
3.执行函数
4.关闭共享库文件。dlclose()
dlerror()处理错误信息。
dlopen()有两个参数,第一个参数是文件名,第二个参数必须是:PTLD_LAZY或RTLD_NOW,区别是:
前者 -- 延迟加载,open时不真正加载,到使用时再加载
后者 -- 现在加载,open的同时加载完成
dlerror()在调用dlopen/dlsym/dlcolse之后立刻调用,效果:如果上面的函数出现错误,返回错误信息,如果没有错误,返回NULL。
阅读(1331) | 评论(0) | 转发(0) |