Linux下静态库的创建与使用

原创 2007年09月29日 17:23:00
        Linux下类库主要有静态库和动态库两种库。其中,静态库 在程序连接的时候会自动的连接到程序里,所以一但编译完成,静态库也就不需要了。静态库通常以.a结尾。例如:libutil.a    libuuid.a     libz.a等。而动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。通常以.so结尾。如:libz.so。因此,静态库相对于共享库来说有更高的效率但是也要消耗更多的空间。值得注意的是,如果既有静态库又有动态库,在编译时默认的使用动态库。本文主要讨论静态库的创建和使用。
1.在程序中使用动态库
(1)如果是标准C语言库我们可以不指定其库路径和库名称
(2)如果静态库处于/lib或/usr/lib下
gcc -o test test.c /usr/lib/libm.a 或 gcc -o test test.c -lm
他们的效果相同。-lm意味着命名为libm.a或libm.so的文件(注意Linux下的库文件都要以lib开头)。
(3)如果要指定静态库所在的路径
可以gcc test.c -L/usr/lib -lm

2.创建自己的静态库
(1) 编写库文件testlib.c
#include<stdio.h>
void a()
{
        printf("zyx/n");
}
(2)编写一个头文件用于声明我们使用的函数testlib.h
void a();
(3) 编译testlib.c
gcc -c testlib.c
(4) 用ar创建一个归档文件
ar crv libfirst.a testlib.o
生成libfirst.a
(5)在某些系统中还要为静态库生成一个内容表
ranlib libfirst.a
(6)然后就可以使用该静态库了
如图:
[root@localhost Source]# vi zyx.c
[root@localhost Source]# gcc -o zyx zyx.c -I./lib -L./lib -lfirst
[root@localhost Source]# ls
hello           HelloWorld.h  static.exe       zyx
HelloWorld.cpp  lib           StaticLibTest.c  zyx.c
[root@localhost Source]# ./zyx
zyx
[root@localhost Source]#
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux下静态库的创建和使用

库是一种软件组件技术,库里面封装了数据和函数。 库的使用可以使程序模块化。 Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件)。 Linux通常把库文件存放...

linux下创建c静态库及在codeblocks中使用

最近项目中需要用到静态库ubuntu下

linux下静态库和动态库的创建和使用

一》静态库的创建和使用:  静态库的制作 1>. 命名规则 1). lib + 库的名字 + .a 2). libmytest.a 2>. 制作步骤: 1). 生成对应的.o文件 -- ....

linux下静态库和动态库的创建和使用

1.首先

Linux下创建和使用静态库、共享库的方法总结

例:有calc.c(数学功能的实现)和show.c(结果显示)、main.c(对前两个函数里功能的调用) 一、静态库 1、静态库的创建     (1)编辑源程序(.h/.c)     (2)编...

Linux下的静态库,共享库的创建和使用

编译程序一般要经过:预处理,编译,汇编和链接这几个步骤。在我们写程序的时候,会存在一些公共的代码。如果为每个程序都要重写这些代码,那么势必会造成太多的麻烦。我们可以将这么公共代码生成库文件,在编译程序...

Linux下静态库、动态库的创建和使用

静态库、动态库的创建和使用 1.按照如下目录,建立如下文件 2.创建静态库 创建lib文件夹,用来存放库文件 编译连接,生成可执行程序: 显示目录和文件: 静态库:ap...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)