`
shake863
  • 浏览: 637339 次
  • 性别: 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 下调试动态链接库

    要生成这样一个动态链接库,我们首先编写这样一个头文件: CODE: [Copy to clipboard] /************关于本文档******************************************** *filename: get.h *purpose: 一个动态链接库头文件示例...

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

    LINUX系统中动态链接库的创建与使用,看完后你也会在linux编写和调用动态库了

    linux动态链接库使用方法分享

    1、前言 在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如...本文重点在于应用,如何编写和使用动态链接库,后续使用动态链接库实现一个插件程序。 2、动态链接库生产 动态链接库与普通的程序相比而言,

    需链接动态库静态库,但不需编译库的makefile

    本示例演示了需链接动态库静态库,但是不需要编译动态库静态库的makefile编写方式,makefile文件内部有详细的注释,目录下也有介绍文档,希望大家在遇到这种情况时,把本示例稍作修改,就可以运行起来

    使用Mingw编译Windows平台下使用的fortran动态链接库

    为了能在32位和64位windows平台VS或VC环境下的C/C++工程能够调用fortran语言编写的科学计算库函数或者自己编写的fortran函数,实现C/C++与fortran的混编,这里采用MinGW软件在windows平台下用unix/linux环境下的GNU ...

    libusb win32 驱动程序 dll动态链接库 libusb-win32-bin-1.2.6.0

    在libusb官网下载的资源,版本为:libusb-win32-bin-1.2.6.0,里面包含有驱动生成工具,可自动为USB设备生成通用驱动,包含usb驱动的动态链接库(linux版和windows版都有),头文件,还有windows,linux下的例程!...

    [转]在Linux中创建静态库.a和动态库.so

    NULL 博文链接:https://jacky-dai.iteye.com/blog/2053931

    Linux动态库生成与使用指南

    Linux下动态库文件的文件名形如 libxxx.so,其中so是 Shared Object 的缩写,即可以共享的目标文件。  在链接动态库生成可执行文件时,并不会把动态库的代码复制到...  把libxxx.so放入链接库的标准路径,或指定 LD_

    为Linux应用程序编写DLL程序函数

    创建能在运行时被动态链接到 Linux 系统上的应用程序的共享目标代码是一项非常简单的练习。应用程序通过使用对动态链接装入器的 dlopen、dlsym 和 dlclose 函数调用来获取对共享目标文件的访问。在运行时,主应用...

    Linux静态库与动态库实例详解

    1. Linux 下静态链接库编译与使用 首先编写如下代码: // main.c #include test.h int main(){ test(); return 0; } // test.h #include using namespace std; void test(); // test.c #include test.h void test...

    linux 下 python调用c或者c++编写的代码使用案例

    在python程序中调用c或者c++ 的代码。本压缩文件解压后有四个文件夹,包含四个不同的调用方法。适用于linux 平台。

    c# - winform调用fortran/c++动态链接库的实现

    在这种情况下,可以使用C++或Fortran编写的库,然后通过C#调用该库来实现需要的功能。 具有优化的计算需求:C++和Fortran语言在计算密集型任务方面通常具有更好的性能。因此,如果需要进行大规模的数值计算或者需要...

    详解Linux动态库生成与使用指南

    Linux下动态库文件的文件名形如 libxxx.so,其中so是 Shared Object 的缩写,即可以共享的目标文件。 在链接动态库生成可执行文件时,并不会把动态库的... 把libxxx.so放入链接库的标准路径,或指定 LD_LIBRARY_PATH,

    Qt 4 插件开发

    要的功能放到动态链接库里面并不能满足一些特定的需求,比如,我们希望应用程序能够自动发现某一特定文件夹下的动态链接库,能够 知道这些动态链接库内部的逻辑是怎样的,我们能够如何使用它们。这些需求,对于一个...

    kunpeng:kunpeng是一个Golang编写的开源POC框架库,以动态链接库的形式提供各种语言调用,通过此项目可快速开发入侵检测类的系统

    p鹏 简介 Kunpeng是一个Golang编写的开源POC检测框架,集成了包括数据库,中间件,web...运行环境:Windows,Linux,Darwin工作形态:动态链接库,so,dll,dylib,go插件 404StarLink 2.0-银河 Kunpeng是404Team中的

    Linux的常用命令cat、sed、zip等用法,以及shell编程的基本语法,以及makefile编写方式等等

    3.lvim工作方式、gcc、gdb用法、动态库和静态库的制作与使用、makefile的编写语法,以及makefile里面的模式匹配、函数、伪目标等知识,以及文件描述符、文件操作(open、close、lseek、stat、dup等语法) 3.进程:进程...

    Windows_Lib.rar_windows_lib

    如何编写动态链接库,以及动态链接库得调用实例。WINDOWS版本和LINUX版本都有。

    sandbox:简单Linux seccomp规则,无需编写任何代码

    它可以为动态链接的二进制文件提供更严格的过滤建筑构建系统期望的最新版本可以作为静态库使用。 建议从上游源构建它,而不要依赖特定发行版中的版本。 Makefile将在libseccomp目录中查找有效的树和内部版本,因​...

Global site tag (gtag.js) - Google Analytics