`
zerxd
  • 浏览: 73842 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

linux共享库编译的一些命令

阅读更多
    在这个例子中,message.c是一个接口函数的具体实现,它要被编译成一个共享的库函数。main.c是一个调用了该共享库的一个函数(在这里没有提供message.c的一些接口,即假设接口已知)。

    由于共享库会被许多程序共享,所以需要以一种位置无关的编译方式编译它。gcc -fPIC -c message.c。PIC标志告诉gcc产生的代码不要包含对函数和变量具体内存位置的引用。
    gcc -shared -o libmessage.so message.o,使用shared标志libmessage.so是共享库。

    用gcc通知连接器使用共享函数库资源libmessage.so:
    gcc -o goodbye -lmessage -L. main.o。
    -lmessage标记告诉gcc在连接时用共享的函数库libmessage.so.  -L.说明gcc 函数库可能位于当前目录。注意这里的-lmessage是-l + message的组合。
   
    导出LD_LIBRARY_PATH环境变量,这里有很多地方要注意。可以cd到工作目录下运行命令export LD_LIBRARY_PATH=`pwd` 这里`不是单是引号。该环境变量可以包含额外的函数库搜索路径。运行时连接器将搜索这些额外的路径以发现没有在标准路径中找到的函数库。
分享到:
评论

相关推荐

    Linux编译动态库和静态库

    使用`cpp`或`gcc`命令,加上`-c`选项来编译源代码,并使用`-fpic`选项确保生成的位置独立代码,这对于动态库是必要的,因为动态库中的代码会在运行时被多个进程共享。 2. 创建动态库: 使用`ld`或`g++`,加上`-...

    linux静态库和共享库.pdf

    在Linux操作系统中,库扮演着至关重要的角色,它们是预先编译的代码集合,允许开发者重用和集成已经实现的功能,而无需从零开始编写代码。本文主要讨论两种类型的库:静态库和共享库(也称为动态库)。 首先,库是...

    linux设备交叉编译nfs服务器需要用到的库

    在实际操作中,可能会遇到依赖问题,因为NFS服务器依赖于一些库,如RPC库、socket库等。确保所有依赖都被正确交叉编译并一同部署。 最后,配置NFS服务器包括设置`/etc/exports`文件来定义哪些目录可以被共享,以及...

    linux下编译.so库文件

    在Linux环境下编译.so库文件是一项关键技能,尤其对于软件开发者而言。本文将深入解析Linux下编译.so库文件的过程,以及与之相关的静态库和动态库的基本概念,旨在为读者提供一个全面的理解。 ### 一、理解库文件...

    Qt Mysql linux驱动编译.docx

    2. 使用`make`命令编译所需的共享动态库: - 对于调试版本:`make -debug` - 对于发布版本:`make -release` 编译完成后,你会在`../plugins/sqldrivers`目录下找到编译好的libqsqlmysql.so库文件。这个库文件是...

    Linux内核编译步骤

    执行 make 命令编译内核,生成 vmlinux 文件。然后,执行 make modules 和 make modules_install 命令编译和安装内核模块。 步骤 3: 编写模块文件及 Makefile 编写模块文件,例如 hello.c,包含了模块的初始化和...

    Linux OpenCV交叉编译环境安装

    Linux OpenCV 交叉编译环境安装 本文主要讲解了如何在 Linux 环境中安装 OpenCV 及交叉编译环境,主要涉及到 Redhat 和 ...通过本文,我们可以了解到 Linux 环境中的交叉编译环境的构建和 OpenCV 库的安装和移植过程。

    cximage静态库 动态库 64位linux版本

    本篇文章将深入探讨cximage库的静态库和动态库版本,以及如何在64位Linux系统中编译和使用它们。 首先,让我们理解什么是cximage库。cximage是一个强大的C++类库,用于处理图像文件,支持多种格式如BMP, JPEG, PNG,...

    Linux C++编译及 静态/动态 链接库 笔记

    这篇笔记主要探讨了在Linux环境下如何编译C++程序以及如何处理静态和动态链接库。以下是对这些知识点的详细说明: 1. **C++编译过程**: - C++程序的编译通常包括预处理、编译、汇编和链接四个步骤。预处理阶段...

    VAD语音活动检测库,linux下编译

    4. 运行make命令进行编译,这会生成静态库或动态库文件。 5. 可选地,运行make install将编译后的库文件安装到系统目录,以便其他程序使用。 在压缩包"webrtc_vad"中,可能包含了以下文件: - 源代码文件(.cc和.h...

    浅谈Linux内核的重编译

    Linux内核的配置和编译流程相对复杂,但通过一系列命令可以完成: - **准备阶段**:首先,使用`#cd /usr/src/linux; make mrproper`命令清理旧的编译残留,确保从干净的状态开始。 - **配置内核**:根据个人偏好,...

    Linux平台gcc和动态共享库的基础知识

    在深入探索Linux平台下的GCC编译器与动态共享库的基础知识之前,我们首先要理解GCC(GNU Compiler Collection)不仅是一个编译器,更是一套工具集,用于编译多种编程语言,包括C、C++、Fortran等。而动态共享库...

    linux 动态库静态库

    动态库在运行时被加载到内存中,多个程序可以共享同一份库的内存副本,从而节省系统资源。在Ubuntu Linux中,动态库文件通常以`.so`(Shared Object)为扩展名。创建动态库的步骤包括编译源码生成对象文件,然后使用...

    linux下NFS及交叉编译环境的配置

    ### Linux下NFS及交叉编译环境的配置 #### 一、NFS配置详解 **1.1 NFS简介** NFS(Network File System)是一种网络文件系统,它允许用户通过网络共享文件,使得用户能够像访问本地文件一样访问远程文件。在嵌入式...

    Linux下编译静态库和动态库1

    Linux 下编译静态库和动态库 Linux 下编译静态库和动态库是 Linux 开发中非常重要的一部分。静态库和动态库都是库文件,但是它们的使用方式和特点不同。下面我们将详细介绍 Linux 下编译静态库和动态库的过程。 一...

    linux的ubuntu上如何编译C和C++代码写的动态库,以及调用执行

    在Linux的Ubuntu操作系统中,编译C和C++代码以创建动态库(即共享对象库,通常以`.so`结尾)以及调用这些库来执行程序是一个常见的需求。以下是一步步教你如何完成这个过程。 首先,我们需要准备源代码文件。在本例...

    pjsip包括pjsua2的linux编译 python&java.pdf

    使用`./configure --enable-shared`命令启用共享库,接着进行编译`make`和安装`sudo make install`。 4. 编译Python模块。文档指出,如果使用非C/C++语言,还需要通过SWIG编译一次。编译成功后,可通过Python3验证...

Global site tag (gtag.js) - Google Analytics