在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目录里

最后,大功告成,我们可以调用动态链接库来运行我们的程序!!!

阅读全文
0 0
原创粉丝点击