`
shake863
  • 浏览: 664486 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux下编写动态链接库的简单过程

阅读更多

(1)       使用编译选项 -fPIC ,产生与位置无关的代码

(2)       使用编译选项 -fvisibility=hidden 隐藏符号

(3)       使用链接选项 -shared 表示生成动态链接库

(4)       使用链接选项 -wl 将参数传递给链接器

(5)       使用链接选项 -soname 指定库名,注意不是库文件名

(6)       保险起见,显式链接 C 库,即指定 -lc ,保证得到所需的启动代码,避免程序在有不兼容版本 C 库的系统上无法启动

(7)       为对外输出符号加上特殊声明, __attribute__((visibility("default")))

(8)       为了让 GCC 编译链接时能找到非默认路径下的动态链接库,在 /etc/profile 中添加 GCC LIBRARY_PATH 环境变量

(9)       为了让程序运行时能自动找到非默认路径下的动态链接库,在 /etc/ld.so.conf 中添加路径,然后用 /sbin/ldconfig 更新缓存

(10)   例子:

a)         int func() __attribute__((visibility("default")));

b)        gcc –fPIC –fvisibility=hidden –g –c xxx.c –o xxx.o

c)        gcc –g –shared –Wl,-soname,libxyz.so –o libxyz.so.1.0 xxx.o

 

 

export LD_LIBRARY_PATH=thirdparty/lib   增加自己的 动态库路径 

分享到:
评论

相关推荐

    linux动态链接库的开发实例

    本教程将通过一个实例深入探讨Linux下C/C++语言如何开发和使用动态链接库。 一、动态链接库基础 动态链接库与静态链接库(.a文件)的主要区别在于,静态链接库在编译时会将库中的代码合并到可执行文件中,而动态...

    linux动态链接库示例

    总结来说,"linux动态链接库示例"是一个关于如何在Linux环境下使用C语言创建、编译和使用动态链接库(`.so`文件)的过程。通过理解这些步骤,开发者能够更好地管理和利用系统资源,提高软件的复用性和维护性。

    Linux C静态链接库与动态链接库编程简单介绍

    在Linux系统中,C语言的库分为静态链接库和动态链接库两种类型,它们都是为了实现代码重用和模块化设计的重要工具。本篇文章将深入浅出地介绍这两种链接库的原理、创建方法以及如何在程序中使用。 一、静态链接库 ...

    Linux下qt动态库创建和使用

    本篇文章将深入探讨如何在Linux下的Qt环境中创建和使用动态库。 首先,创建动态库涉及以下步骤: 1. **项目设置**:在Qt Creator中,新建一个Qt Console Application项目。选择“New File or Project” -> ...

    Linux下使用动态链接库和静态链接库的项目建立及单步调试

    ### Linux下使用动态链接库和静态链接库的项目建立及单步调试 #### 一、动态链接库的建立和单步调试 ##### 1.1 编写用户接口文件 `datetime.h` 首先,创建了一个头文件`datetime.h`,该文件定义了两个结构体:`...

    linux创建和使用动态链接库.so文件

    通过以上步骤,你已经掌握了如何在 Linux 下创建和使用动态链接库 `.so` 文件的基本方法。这些技能对于开发复杂的软件项目尤其有用,因为它们允许你轻松地管理不同组件之间的依赖关系,并提高代码的可重用性。

    深入分析Windows和Linux动态库应用异同 动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。

    在软件开发领域,动态链接库(Dynamic Link Library,简称DLL)技术是提高程序效率和灵活性的关键手段之一。无论是在Windows还是Linux这样的不同操作系统环境中,动态库都发挥着重要的作用。通过动态链接的方式,...

    Linux静态动态链接库的创建和使用

    本文介绍了在Linux环境下如何创建和使用静态链接库及动态链接库的方法。通过具体的示例代码和步骤,我们可以看到,无论是静态链接库还是动态链接库,都有其特定的用途和优势。静态链接库适用于那些不希望外部改动或...

    LINUX系统中动态链接库的创建与使用

    在Linux环境下,动态链接库通常被称为共享对象(Shared Object),以`.so`作为文件扩展名。本文将详细介绍如何在Linux系统中创建和使用动态链接库,通过实例讲解整个过程。 #### 二、Linux动态链接库的优势 1. **...

    使用c语言编写动态链接库(linux下.so文件,windows下dll文件),使用python调用c语言接口。.zip

    本示例涉及到的是使用C语言创建动态链接库,并在不同的操作系统环境下——Linux(生成`.so`文件)和Windows(生成`.dll`文件)——进行实现。之后,我们还将讨论如何通过Python语言调用这些C语言编写的接口。这一...

    Linux系统中动态链接库的创建及其使用

    Linux系统通常将动态链接库放在`/lib`或`/usr/lib`目录下,但为了演示,我们暂时不考虑这一点。 5. **使用动态链接库**: 在其他程序中使用动态链接库,需要包含对应的头文件(`#include "datetime.h"`),并且在...

    LINUX动态链接库高级应用

    动态链接库(Dynamic Link Library),在LINUX环境下通常被称为共享对象(Shared Object),是一种可被多个程序同时加载并使用的库文件。它们以`.so`为扩展名,主要用于实现代码和数据的共享,从而提高系统的资源...

    Linux系统动态库加载过程1

    PLT是一个特殊的内存区域,用来存放动态链接库中的函数地址。在这个例子中,`add`函数的地址被记录在内存地址`0x804a00c`处。 当我们从主函数中调用`add`函数时,程序首先会跳转到PLT中的对应项。PLT项中会包含一...

    linux下动态库的建立和使用

    例如,我们可以编写两个函数,一个用于查询当前日期getdate,一个用于查询当前时间gettime,并将这两个函数存于动态链接库my.so中。 首先,我们需要编写用户接口文件datetime.h,内容如下: /* datetime.h : 纵横...

    Linux静态and动态链接库 创建和使用

    ### Linux静态和动态链接库创建和使用 #### 概述 在软件开发过程中,经常会遇到相同功能模块在多个项目中重复出现的情况。例如,多个项目可能都需要实现用户验证功能。为了避免代码重复,提高代码的可维护性和重用...

    Linux动态链接库.so文件的创建与使用

    在Linux系统中,动态链接库(Dynamic Linking Library,通常以`.so`为扩展名)是一种重要的编程资源,它允许程序共享代码,从而节省内存并提高执行效率。本篇文章将深入探讨如何创建和使用`.so`文件,以及相关的重要...

    cjson编译好的动态链接库,so和dll,32位

    这里的".so"是Linux下的动态链接库扩展名,代表"Shared Object",而".dll"则是Windows下的动态链接库扩展名。 "libcjson.so.1.6.0"是CJSON库的Linux 32位版本,"1.6.0"表示这是CJSON的一个特定版本。这个版本可能...

    opencv-2.4.12版本已编译linux-arm动态链接库

    这个压缩包包含的是OpenCV的2.4.12版本,针对Linux ARM架构的预编译动态链接库。在嵌入式系统,如树莓派、开发板等运行Linux操作系统的ARM设备上进行图像处理和视觉应用开发时,这样的库非常有用。 OpenCV 2.4.12是...

Global site tag (gtag.js) - Google Analytics