在Linux的Eclipse中编译使用动态链接库
来源:互联网 发布:机器视觉主流算法 编辑:程序博客网 时间:2024/05/17 02:20
预备知识:
linux系统中静态库文件以.a结尾,动态库文件以.so结尾
调用动态库在程序运行时,操作系统会将.so文件加入到内存中,可以做到内存共享同时提供给多个客户使用
linux的编译中有两种风格(C和C++)默认是使用C风格的。在动态链接库中,输出的是函数,而不输出类,若输出类只能被C++调用。
程序执行时,系统查找文件目录的顺序为:
在windows中是首先在当前目录,其次是system32目录、最后是在path路径中。
而在linux中是在/usr/lib中查找的。
编译动态链接库:
一、在Eclipse中建立新的C++ Project,选择Shared Library,Cross GCC点确定。
二、在工程中加入你需要编译成动态链接库的文件
三、右键动态链接库工程,点属性--->C/C++Build--->Setting--->Cross G++ Compiler--->在Command一栏g++的后面添加-fPIC(PIC就是position independent code),点确定。
-fPIC 的使用,会生成 PIC 代码,.so 要求为 PIC,以达到动态链接的目的,否则,无法实现动态链接。
四、点击工程Project,Build All
至此,动态库文件就可以生成了。我们可以在动态库项目文件夹的Debug目录中找到该.so文件
动态库文件的使用
一、首先在项目工程中添加动态库中的所有头文件(添加方法:复制动态库中的所有头文件,在Eclipse的工程项目中右击Paste[这里可以在工程下自己建立一个src文件夹,将所有源文件和头文件放在文件夹中,方便管理])
二、在编译时,需要告诉当前工程我们LIB的名字以及存放的路径。
C++工程--->右键属性--->C/C++Build--->Setting--->Cross G++ Linker--->Library
上栏填动态库的名称。[ libTestLib.so ===其中第一个lib代表是文件类型,.so代表是动态库,剩下的字母是真正的库的名称 ]
下栏选.so文件所在的目录
三、在执行时,需要将.so文件拷贝到/user/lib目录里
最后,大功告成,我们可以调用动态链接库来运行我们的程序!!!
- 在Linux的Eclipse中编译使用动态链接库
- linux下使用eclipse编译、链接、动态库的学习笔记
- 在x64位Linux上生成动态链接库必须使用编译选项-fPIC的问题
- 在x64位Linux上生成动态链接库必须使用编译选项-fPIC的问题
- linux动态链接库的编译及使用<二>
- Linux 动态链接库的编译和使用实例
- Linux编译动态链接库和使用
- linux下在liteide中使用动态链接库
- 在win32汇编中动态链接库的使用
- vs下动态链接库文件的创建以及动态链接库在程序中使用
- 在动态链接库中使用资源
- LINUX系统中动态链接库的创建与使用
- LINUX系统中动态链接库的创建与使用
- LINUX系统中动态链接库的创建与使用
- LINUX系统中动态链接库的创建与使用
- LINUX系统中动态链接库的创建与使用
- LINUX系统中动态链接库的创建与使用
- LINUX系统中动态链接库的创建与使用
- Java设计模式-命令模式
- Intellij IDEA unresolved javascript function
- Spring整合hibernate配置
- makefile极好的极全面的自学博文
- Centos的yum源更换为国内的阿里云源
- 在Linux的Eclipse中编译使用动态链接库
- DES加解密工具类
- python 中trick 总结(一)
- Android_UI:Drawable
- Spring管理hibernate
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- Android中怎样防止内存泄漏?
- 收集各种API文档,提供下载.chm文件,HTML、java、w3school、servlet、js、spring、等等。
- 远程检测客户机上的共享设置情况