`
弄月吟风
  • 浏览: 199123 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Linux编译静态库和动态库

阅读更多

首先我们创建一个static_lib.c文件,内容如下:

 

int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}

 然后在shell中编译该文件,生成一个重定位的目标文件如下:

gcc -c static_lib.c

 Linux下使用ar工具创建一个静态库,或者将目标文件加入到已经存在的静态库中

ar rcs 静态库名 目标文件1 目标文件2.....目标文件n

该命令表示将目标文件1-n加入到指定的静态库中。如果该静态库不存在,则创建静态库文件,并且将库文件的拓展名为.a ,其中ar工具的参数rcs起了至关重要的作用。这三个参数分别表示:把列表中的目标文件加入到静态库中(参数r)若指定的静态库不存在,则创建该库文件(参数c);最后更新静态库文件的索引,失之保函新加入的目标文件文件的内容(参数s)

现在需要使用刚刚生成的static.o目标文件创建一个静态库static_lib.a,其执行命令如下:

ar rcs static_lib.a static_lib.o

  然后你就能够在目录下看到你创建的静态库了

下面是使用静态库

在vi编辑器中编辑头文件static_lib.h如下:

 

extern int add(int a,int b);
extern int sub(int a,int b);

然后在vi编辑器中编辑使用库程序: main.c

 

#include<stdio.h>
#include"static_lib.h"
int main(){
printf("Please input a and b:");
scanf("%d%d",&a,&b);
printf("the add :%d\n",add(a,b));
printf("the sub :%d\n",sub(a,b));
return 0;
}

   然后使用命令:

 gcc main.c -static ./static_lib.a -o app 

动态库也很方便,编译命令是:gcc -shared -fPIC -o share_lib.so static_lib.c

使用时:gcc main.c ./ static_lib.so -o app

 

 

 

 

分享到:
评论

相关推荐

    linux静态库和动态库

    ### Linux静态库与动态库详解 #### 一、引言 在Linux环境下,库是一种重要的软件组件,用于封装一组相关的函数或数据结构,以便于在不同的应用程序之间共享代码。库通常分为两大类:静态库(static libraries)和...

    Linux编译动态库和静态库

    本篇将详细介绍在Linux环境下如何编译动态库和静态库。 首先,我们来看动态库的生成过程。动态库的编译通常分为两个步骤: 1. 编译源文件为`.o`对象文件: 使用`cpp`或`gcc`命令,加上`-c`选项来编译源代码,并...

    boost库1.68版本Linux下编译的动态库和静态库

    这将编译动态库(`.so`)和静态库(`.a`),并安装到指定的路径。 5. **测试与验证**:编译完成后,为了确保库的可用性,可以运行Boost的测试套件,用`bjam test`执行所有测试案例。如果所有测试都通过,那么说明库...

    linux下g++编译与使用静态库和动态库

    Linux 下 g++ 编译与使用静态库和动态库 Linux 下 g++ 编译与使用静态库和动态库是 Linux 开发中一个非常重要的知识点。静态库(*.a)和动态库(*.so)是 Linux 下两种常用的库文件类型,了解它们的生成和使用方法...

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

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

    grpc-1.30.2 Linux 编译静动态库

    默认编译是静态库,但考虑到 linux 上动态库使用较多,所以使用 -DBUILD_SHARED_LIBS=ON 参数编译为动态库。 在 centos 7 下使用 gcc 4.8.5 + cmake 3.16.9 编译,包含 bin, include, lib, lib64, share 五个目录,...

    Linux下g++编译与使用静态库和动态库的方法

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成...

    linux 动态库静态库

    在Linux系统中,动态库(Dynamic Library)和静态库...总之,Linux的动态库和静态库是程序开发的重要组成部分,它们提供了代码复用的方法。了解并熟练掌握它们的创建和使用,将对提升开发效率和优化程序性能大有裨益。

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

    3. 配置编译选项:使用configure脚本或者CMake配置编译选项,确保指定为64位平台,并决定是要编译静态库还是动态库。 4. 编译源代码:运行make命令开始编译过程。这会生成所需的.a或.so文件。 5. 安装库:编译完成...

    opencv4.4.0交叉编译好的动态库和静态库.rar

    总之,OpenCV 4.4.0交叉编译的动态库和静态库为开发者在ARM架构的Linux系统上进行计算机视觉应用开发提供了便利。无论你是进行图像处理、机器学习模型的部署还是其他相关项目,这些预编译的库都能极大地简化你的工作...

    Linux静态库和动态库

    ### Linux静态库与动态库详解 #### 基本概念 **库的定义与作用**:库,实质上是预编译的代码集合,旨在提供重复使用的功能或服务,简化软件开发过程。无论是在Windows还是Linux平台,库的存在极大地提高了编程效率...

    linux pthread libc静态库

    此外,由于静态库的特性,如果`pthread`或`libc`有安全更新,使用静态编译的程序不会自动获取这些更新,因此在某些情况下,动态链接库可能是更好的选择。 总之,`pthread`和`libc`静态库是Linux开发中的重要组件,...

    linux静态库与动态库

    在Linux操作系统中,库文件是...总之,理解Linux下的静态库和动态库以及如何生成和使用它们对于进行系统级编程和软件开发至关重要。选择静态库或动态库取决于需求,如资源限制、程序部署的便捷性以及库更新的需求等。

    lua-5.2.0静态库+动态库.zip

    在这个“lua-5.2.0静态库+动态库.zip”压缩包中,包含的是Lua 5.2.0版本的源代码,以及编译后的静态库和动态库文件。这些库文件对于开发者来说是至关重要的,因为它们允许在C/C++项目中集成Lua功能。 首先,我们来...

    linux 编译静态库的例子

    在Linux系统中,编译静态库是开发C++程序时常用的一个步骤,特别是当你希望创建一个独立的可执行文件,不依赖外部动态链接库时。本例子提供了如何编译静态库的详细步骤,适合初学者学习。让我们深入探讨这个过程。 ...

    linux静态库和共享库.pdf

    本文主要讨论两种类型的库:静态库和共享库(也称为动态库)。 首先,库是一种可执行代码的二进制形式,可以在操作系统加载到内存中执行。尽管Windows和Linux都使用库,但由于它们的体系结构差异,它们的库文件是不...

    QT5编译freetype生成静态以及动态库源码,Linux及Windows都可编译

    4. **配置编译选项**:在项目设置中,指定编译目标为静态库(`libfreetype.a`)和动态库(`libfreetype.dll`)。对于Linux,这通常在.pro文件中通过`QMAKE_LFLAGS`和`QMAKE_CXXFLAGS`设置;对于Windows,可以在项目属性...

    CentOS7环境下编译的libwebsockets动态库和静态库

    本篇将详细解析如何在CentOS 7环境下编译libwebsockets动态库和静态库,并探讨其在实际应用中的价值。 首先,让我们了解一下libwebsockets库。libwebsockets是一个C语言编写的WebSocket库,它支持HTTP和WebSocket...

    CentOS7环境下编译的openssl 3.0动态库和静态库

    4. **配置编译**:运行`./config`或`./Configure`命令,根据需要选择目标平台和选项,例如`no-shared`表示编译静态库,`shared`则表示编译动态库。 5. **编译和安装**:执行`make`命令进行编译,然后使用`make ...

Global site tag (gtag.js) - Google Analytics