ubuntu下动态链接库的编译和使用实例
来源:互联网 发布:手机淘宝如何找同款 编辑:程序博客网 时间:2024/05/29 03:53
以下实例的环境是amd64 + ubuntu10.10 +g++ 4.4.5测试成功,在其他配置的机器上可能有一点区别。 动态库的使用方式中有两种,第一种是类似于静态库的使用,另一种我称之为真正的动态加载动态库,主要是因为这种方式在程序运行的过程中加载链接库,使用之后在卸载链接库。 先介绍第一种。 在目录/home/owner/test/下创建我们的实验程序: //dll_fun.c #include<stdio.h> void dll_function(const char*szString) { printf("%s\n", szString); } 编译生成动态链接库 gcc -c-fPIC dll_fun.c //这里一定要加上-fPIC选项,不然下一步编译失败 gcc -shared -fPIC -olibdllfun.so dll_fun.o //生成动态链接库libdllfun.so 创建调用动态库方法: //main.c void dll_function(const char*szString); int main() { dll_function("This is the words of the dllfunction!!!!!!"); return0; } 编译main.c生成可执行文件 gcc -o main main.c -L. -ldllfun//这里提供了刚才生成的dllfun库 如果此时执行./main的话,会出现如下错误: cannot open shared object file:No such file or directory 这是因为系统未找到动态库libdllfun.so。 Linux动态链接库的默认搜索路径是/lib和/usr/lib,因此动态库被创建后,一般都复制到这两个目录下面,当程序执行时需要某动态库,并且改动态库还没有加载到内存中,则系统会自动到这两个默认的搜索路径中去查找相应的动态库文件,然后加载改文件到内存中,这样程序就可以使用该动态库中的函数以及该动态库中的其他资源了。在linux中,动态库的搜索路径除了默认的搜索路径外,还可以通过其他三种方法来指定,这里只介绍其中的一种:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。 当通过该环境变量指定多个动态链接库搜索路径时,路径之间用冒号":"分隔。 使用下面命令来配置环境 mkdir /home/owner/test/lib//将这个目录设置为动态库的存放目录 mkdir/home/owner/test/libdllfun.so /home/owner/test/lib/libdllfun.so export LD_LIBRARY_PATH=/home/owner/test/lib 此时设置这个环境变量之后的所有命令命令中,该环境变量都有效。 把.so(动态链接库)直接放在根目录下的lib文件下(!!!一面总是加载不到路径)
0 0
- ubuntu下动态链接库的编译和使用实例
- ubuntu下动态链接库的编译和使用实例
- ubuntu下动态链接库的编译和使用实例
- ubuntu下动态链接库的编译和使用
- Linux 动态链接库的编译和使用实例
- ubuntu下动态链接库的使用
- ubuntu下用Gcc编译器编译c语言的静态和动态链接库范例
- windows下动态链接库的使用(实例)
- Ubuntu下的进行动态链接库创建和使用的方法
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- Linux下使用gcc进行静态编译和使用动态链接库编译
- 老生常谈--关于Linux下编译和使用动态链接库静态链接库
- 关于Linux下编译和使用动态链接库静态链接库
- Linux编译动态链接库和使用
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- 超强OCR文字识别软件首选ABBYY FineReader
- Linux入门1(手记)
- 点击EditText以外的地方隐藏输入框和软键盘
- 推荐!手把手教你使用Git
- Android Studio 快捷键整理
- ubuntu下动态链接库的编译和使用实例
- 使用Spring boot 简单搭建网站框架
- STM32 GPIO的学习
- JavaIO学习
- 漂亮的layui 分页展示
- H5游戏和手游APP的差异在哪里?
- 商场--管理员删除功能
- Zipline框架初探(上)
- 事务管理实现原理