Eclipse C++配置静态链接库和动态链接库

本文介绍了如何在Eclipse中创建和使用C++动态链接库。首先创建一个Shared Library项目,编写代码并生成liba.so文件。接着创建一个Executable项目,引入动态链接库,并设置库路径。在运行时,由于找不到动态链接库,需要修改LD_LIBRARY_PATH环境变量来指定库的路径。
1.动态库:

 一、创建动态链接库1、创建工程new->project->c++ project选择Shared Library->Empty Project.输入工程名a,点击finish,完成工程的创建。

  2、编写代码在windows下封装动态链接库时对要封的函数要用__declspec(dllexport)来标明,在linux下不用,在linux下只需要直接把要封的函数的声明放到一个。h文件中,要用这个库时将相应的。h文件加载到工程中。

  3、生成动态链接库编译代码,成功后在Debug目录下会生成liba.so文件。

  二、动态链接库的使用1、创建工程new->c++ project->Executable->Empty Project.工程名为libr 2、编写所需代码,并将相应的。h文件放到工程目录下并加载到工程中。

  3、加入动态链接库liba.so右键工程Properites->C/C++ Build->Settings,然后如下图

 

  注意最右边,库的名称liba.so变为a,库的路径就写这个库所在的路径。

注意:-lpthread -ldl等也要在此添加,只不过不需要添加路径

 

  4、修改环境变量。

   以上均做正确的话编译链接是能通过的,但是在运行时会报错error while loading shared libraries: libShared.so: cannot open shared object file: No such file or directory ,这时需要修改环境变量。在工程处右键,Run As->Run Configurations,选择Environment,如下图:

 

  新加一个环境变量,名称必需是 LD_LIBRARY_PATH,值为动态链接库所在的路径。

  以上就完成了linux下生成动态链接库和使用动态链接库。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.静态库
因为要静态链接到正则表达式的库,所以如下图所示,设置对应的*.a文件路径到eclipse,以使链接器能够找到它。
eclipse下使用动态库、静态库相应的配置 - chek liang - chek liang

编译通过!
为了我们的程序能够正确载入,我们需要让我们的程序在我们的系统范围内也能够找到我们的库。这时候我们需要在设置一下。详见 这部分 的相关介绍。
测试程序!
<think> 我们已经在之前的对话中讨论了在Eclipse中链接C++静态库的一般方法。现在,用户特别询问在Ubuntu系统上的具体步骤。根据用户提供的引用(尤其是引用[3]),结合Ubuntu环境Eclipse CDT的标准配置,我将详细说明操作流程。 ### 步骤1:准备静态库文件 在Ubuntu中,静态库通常以`.a`为后缀。假设您已经有了一个静态库文件,例如`libmylib.a`,并知道其存放路径(如`/home/user/libs`)。如果尚未生成静态库,您可以使用`ar`命令创建: ```bash ar rcs libmylib.a objfile1.o objfile2.o ``` ### 步骤2:在Eclipse项目中配置静态库 1. **打开项目属性**:右键点击Eclipse项目 → 选择 **Properties**。 2. **进入链接器设置**: - 导航到 **C/C++ Build** → **Settings**。 - 在 **Tool Settings** 选项卡下,选择 **GCC C++ Linker**(注意:在Ubuntu中通常是GCC工具链,不是MinGW)。 3. **添加库搜索路径(-L)**: - 选择 **Libraries** 子选项。 - 在 **Library search path (-L)** 区域,点击 **Add...**。 - 输入静态库目录的绝对路径(如`/home/user/libs`)。可添加多个路径[^3]。 4. **指定库名称(-l)**: - 在同一界面的 **Libraries (-l)** 区域,点击 **Add...**。 - 输入库名(省略`lib`前缀`.a`后缀)。例如,对于`libmylib.a`,只需输入`mylib`[^2][^3]。 5. **替代方法:直接添加库文件(引用[3]提及)**: - 导航到 **GCC C++ Linker** → **Miscellaneous**。 - 在 **Other objects** 区域,点击 **Add...** 并选择静态库文件(如`/home/user/libs/libmylib.a`)。 - 此方法相当于在链接命令中直接写入库文件路径,无需`-L``-l`参数。 ### 步骤3:验证并构建 1. 保存设置后,执行 **Project → Clean** 清理项目。 2. 重新构建(**Project → Build Project**)。 3. 检查控制台输出:若链接成功,则无错误;若出现`undefined reference`,请检查: - 库路径是否正确 - 库名称拼写是否准确(大小写敏感) - 库是否包含所需的符号(可用`nm libmylib.a`检查) ### 注意事项 - **库顺序**:如果多个库存在依赖关系,被依赖的库应放在后面。例如,若`libA.a`依赖`libB.a`,则链接器参数顺序应为`-lA -lB`。 - **头文件配置**:确保在 **C/C++ General → Paths and Symbols → Includes** 中添加了库的头文件路径。 - **静态库特性**:静态库会在编译时直接嵌入到可执行文件中,因此运行时无需额外部署。 ### 引用说明 用户提供的引用[3]描述了在Ubuntu下通过`Miscellaneous`添加`.a`文件的方法[^3],而引用[2]提到了在`Libraries`设置中添加库名称的标准方式[^2]。两种方法均可,但推荐优先使用`-L``-l`(更符合GCC惯例)。 §§相关问题§§ 1. 在Ubuntu的Eclipse中如何创建C++静态库? 2. 如何解决Eclipse链接静态库时的"cannot find -lxxx"错误? 3. 动态库(.so)静态库(.a)在Ubuntu开发中有哪些优缺点? </think> ### Ubuntu系统中Eclipse链接C++静态库的方法 在Ubuntu系统下,通过Eclipse CDT链接C++静态库(`.a`文件)需配置链接器路径库名称。以下是详细步骤(以GCC工具链为例): --- ### **步骤1:准备静态库** 1. 确保静态库文件(如`libmylib.a`)位于已知目录(如`/home/user/libs`) 2. 库命名规范: - 前缀必须是`lib`(如`libmylib.a`) - 链接时只需指定`mylib`(自动补全为`-lmylib`) --- ### **步骤2:配置Eclipse项目** 1. **打开项目属性** - 右键项目 → **Properties** → **C/C++ Build** → **Settings** ```mermaid graph LR A[项目右键] --> B[Properties] B --> C[C/C++ Build] C --> D[Settings] ``` 2. **添加库搜索路径(-L)** - 选择 **GCC C++ Linker** → **Libraries** - 在 **Library search path (-L)** 点击 **Add...** -
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值