Linux下静态库生成和使用
来源:互联网
时间:2026-02-26 13:48:48
作者:
系统大全为您提供
一.静态库概念1.库是预编译的目标文件(object files)的集合,它们可以被链接进程序。静态库以后缀为”.a”的特殊的存档(archive file)存储。2.标准系统库可在目录/usrb与b中找到。比如,在类Unix系统中C语言的数序库一般存储为文件/usrbbm.a。该库中函数的原型声明在头文件/usr/include/math.h中。3.C标准库本身存储为/usrbbc.a,它包含ANS1/ISO标准指定的函数,比如printf。对每一个C程序来说,libc.a都默认被链接。4.一个事例:在tiger.c程序中调用一个数学库libm.a中sin函数。 #include<stdio.h>#include<math.h>int main(){ double x = 2.0; double y = sin(x); printf(“the result:%f”,y); return 0;}
如果直接使用gcc tiger.c则会出现错误:undefined reference to ‘sin’;1>函数sin(),未在本程序中定义也不在默认库’libc.a’中,除非被指定,编译器也不会链接’libm.a’。2>为使编译器能将sin()链接进主程序‘test.c’,需要提供数学库’libm.a’.。3>使用方法:gcc tiger.c /usrbbm.a -o tiger则可以编译通过。为了避免在命令行中指定长的路径,编译器为链接函数库提供了快捷的选项“-l”。因此可以使用下面的方法:gcc tiger.c -lm –o tiger注:选项-lNAME使用连接器尝试链接系统库目录中的函数库文件libNAME.a。 二.生成和使用静态库1.静态库是obj文件的一个集合,通常静态库以”.a”为后缀。静态库由程序ar生成。2.静态库的优点是可以在不用重新编译程序库代码的情况下,进行程序的重新链接,这种方法节省了编译过程的时间(在编译大型程序的时候,需要花费很长的时间)。静态库的另一个优点是开发者可以提供库文件给使用的人员,不用开放源代码,这是库函数提供者经常采用的手段。3.通过一个实例来了解如何自己生成静态库和使用静态库首先生成静态库1>在test文件夹下有三个文件:main.c ,tiger.c,tiger.h;a. main.c文件中的内容:
#include<stdio.h>#include”tiger.h” //注意include该文件,并不是仅链入.a文件即可int main(void){ printf(“sum=%d”,add(3,5)); return 0; }
b.tiger.h文件中的内容:
#ifndef __TIGER__#define __TIGER__int add(int a,int b);#endifc.tiger.c文件中的内容
int add(int a,int b){ return a+b;}2>创建静态库的最基本步骤是生成目标文件tiger.ogcc -o tiger.o -c tiger.c3>然后生成静态库libadd.a:ar -rcs libadd.a tiger.o 其次使用静态库1>使用gcc命令带上库文件就OK了 gcc -o main main.c libadd.a2> 也可以使用命令”-l库名”进行,库名是不包含库函数库和扩展名的字符串。 gcc -o main main.c -ladd上面的命令执行完后,系统返回:Cannot find –ladd说明:上面的命令将在系统默认的路径西安查找add函数库,并把他链接到要生成的目标程序上。系统提示没有找到库文件add,这是由于add库函数没有在系统默认的查找路径下,我们需要认为指定库函数的路径,例如:库文件和当前编译文件在同一目录下: gcc -o main main.c -L ./ -ladd系统就能正常生成可执行文件。说明: 在使用-l选项时,-o选项的目的名要在-l链接的库名之前,否则gcc会认为-l是生成的目标而出错。
以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。
本文来自系统大全https://www.herecours.com/d/file/efpub/2026/26-26/20260226133302568966
编辑推荐:
- Linux下静态库生成和使用02-26
- Linux修改hostname的两个办法02-26
- linux下的基本指令使用和makefile的配置02-26
- Linuxarping命令测试IP地址冲突02-26
- linux ubuntu12.04 卸载和安装mysql02-26
- debian/ubuntu安装QQ02-26
- Linux中的压缩解压命令小记02-26
- Linux内核3.14.5最新版发布02-26
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- linux下的基本指令使用和makefile的配置
linux下的基本指令使用和makefile的配置
26-02-26 - Linuxarping命令测试IP地址冲突
Linuxarping命令测试IP地址冲突
26-02-26 - Linux内核3.14.5最新版发布
Linux内核3.14.5最新版发布
26-02-26 - Linux中的free命令
Linux中的free命令
26-02-26 - Linux系统怎么架设共享文件服务器?
Linux系统怎么架设共享文件服务器?
26-02-26 - Windows和linux双系统——修改默认启动顺序
Windows和linux双系统——修改默认启动顺序
26-02-26 - 三只羊网络回应网传“借壳上市成功”:不实信息
三只羊网络回应网传“借壳上市成功”:不实信息
26-02-26 - 携程集团:反垄断调查目前无法预计结果,公司业务运营保持正常
携程集团:反垄断调查目前无法预计结果,公司业务运营保持正常
26-02-26 - linux打开端口《图》
linux打开端口《图》
26-02-26 - Linux常见目录详解图
Linux常见目录详解图
26-02-26
