linux eclipse动态链接,Linux下使用Eclipse C/C++生成创建并调用动态库(.so)

本文详细介绍了在Lubuntu 14.04环境下使用Eclipse Oxygen 4.7创建C++动态库的过程,包括创建工程、设置-fPIC、编译并解决链接时找不到库的问题。步骤包括配置库路径、ldconfig操作,适合初学者理解动态库使用实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、平台版本

Linux版本:Lubuntu14.04

eclipse版本:Oxygen 4.7

二、创建动态库

1、创建工程:File->New->C/C++ Project,选择C Managed Build

8b681af1169dd8427177724bb6dd23b3.png

90e8b2b950cc661d6397fb14e8d5d446.png

2、输入项目名,Project type选Shared Library->Empty Project,工具链选用Linux GCC

ddca62e957b020c8b63e0a2b403dd157.png

3、新建源文件,New->Soure File,编写动态库代码(这里是简单测试因此没有创建头文件,可以另建目录放置源文件和头文件方便管理)

4f46e572fd3b383e61415169a7a94c71.png

/** test.c

*

* Created on: 2019年1月15日

* Author:*/#include

voidtest()

{

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):

-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。

64e6f7a4696c8d979c86d96676cccaa6.png

5、编译工程,在构建项目工程路径下的./Debug中可以看见生成的.so文件

986b895e40347c0585d50601f8e1ebf8.png

三、使用动态库

1、创建新工程,并设置要使用的库的名称和路径

b43c7672dcb8a350a6c34cd901356479.png

12d8123e41cef74123de21061a4cd58e.png

2、添加代码,编译运行

#include #include

int main(void) {

test();//动态库中的函数

returnEXIT_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.youkuaiyun.com/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

再次运行程序,成功使用动态库

57e060cd2776770b163d7f9052a80cea.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值