您的位置:首页 > 运维架构 > Linux

在Linux的Eclipse中编译使用动态链接库

2017-05-20 11:23 363 查看
预备知识:

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

最后,大功告成,我们可以调用动态链接库来运行我们的程序!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++