一、平台版本
Linux版本:Lubuntu14.04
eclipse版本:Oxygen 4.7
二、创建动态库
1、创建工程:File->New->C/C++ Project,选择C Managed Build
2、输入项目名,Project type选Shared Library->Empty Project,工具链选用Linux GCC
3、新建源文件,New->Soure File,编写动态库代码(这里是简单测试因此没有创建头文件,可以另建目录放置源文件和头文件方便管理)
/* * test.c * * Created on: 2019年1月15日 * Author: */ #include <stdio.h> void test() { printf("hello "); }
4、勾选-fPIC,右键项目工程->Properties->C/C++ Build->Settings,Tool Settings->GCC C Comoiler->Miscellaneous,勾选Position independent Code(-fPIC)
作用(参考http://blog.sina.com.cn/s/blog_54f82cc201011op1.html):
5、编译工程,在构建项目工程路径下的./Debug中可以看见生成的.so文件
三、使用动态库
1、创建新工程,并设置要使用的库的名称和路径
2、添加代码,编译运行
#include <stdio.h> #include <stdlib.h> int main(void) { test(); //动态库中的函数 return EXIT_SUCCESS; }
运行时候出现以下错误:
/home/oyqj/eclipse-workspace2/useTest/Debug/useTest: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
原因:
系统没有找到对应的库文件
解决方法(参考https://blog.csdn.net/shine_journey/article/details/78356063):
1、打共享库放到/usr/local/lib目录下(很多开源共享库都会安装到该目录)
2、修改共享库配置文件/etc/ld.so.conf,修改成以下内容
include /etc/ld.so.conf.d/*.conf
/usr/local/lib
3、执行命令,告知系统共享动态库
ldconfig
再次运行程序,成功使用动态库