linux库文件编程
参考博文链接:
https://www.cnblogs.com/guochaoxxl/p/7141447.html
https://www.cnblogs.com/tuhooo/p/8757192.html
一:库函数介绍
事先对 这些函数进行编译,然后将他们放置在一些特殊的文件中,这些目标代码文件称为库。库文件中的函数可以通过链接程序与用用程序进行链接,这样就不用每次执行程序是都对这些通用的函数进行编译了。
标准的c库函数名称为libc,包含了内存管理或者输出输入操作的基本函数。
库的两种形式:静态库和共享库。
二:静态库
静态库由称为文本文档。它是多个.o文件的集合。linux中静态库的后缀名为.a
静态库的代码在编译时就已经链接到应用程序中。
使用ar工具维护和管理静态库
建立和使用静态库
1:编写源文件
源码1:
one.c
#include"one.h"
void one(int 1,int 2)
{
a = int1+int2;
printf("%d",a);
}
one.h
#ifndef one_h
#define one_h
#include<stdio.h>
void one(int1,int2);
#endif
源码2:
main.c
#include"one.h"
int mian(int argc,char **argv)
{
int a,b;
scanf("%d%d",&a,&b);
one(a,b);
return 0;
}
2:生成.o文件
gcc -c one.c
3:建立静态库链接ar rcs libmylib.a one.o
这样就在当前目录下建立好了静态库
4:测试静态链接库
gcc -o testc main.c -static -L. -lmylib
-static指定编译器链接静态库,-L.指定静态库的路径为当前路径
小结
使用静态库可以使程序不依赖任何其他库而独立运行,但是会占用很多的内存空间已及磁盘空间,而且如果库文件更新则要重新编译源码,不灵活。
附加Makefile 文件
OBJ=main.o one.o
2 testc:$(OBJ) main.h
3 gcc -o testc $(OBJ)
4 main.o:main.c
5 one.o:one.c 8 .PHONY:cleanA clean
9 cleanA:
10 rm testc $(OBJ)
11 clean:
12 rm $(OBJ)
~
动态库编译
源码同上
gcc -shared -fPIC -o libcal.so one.o
gcc -o testCal testCal.c -L. -lcal
linux库文件编程的更多相关文章
- linux库文件编写入门(笔记)
linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...
- 查看linux库文件32位还是64位
查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a *.a objdump -a *.so
- Linux库文件路径的添加
库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用 ...
- linux 库文件配置
linux 库文件配置 /etc/ld.so.conf 或 /etc/ld.so.conf.d/*.conf
- 【Linux技术】linux库文件编写·入门
一.为什么要使用库文件 我们在实际编程中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: //U ...
- linux库文件的制作
一.为什么要使用库文件 我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同, 实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: ...
- Linux 库文件详解
转自: http://www.cppblog.com/deane/articles/165216.html http://blog.sciencenet.cn/blog-1225851-904348. ...
- linux文件编程----系统调用
linux中文件编程可以使用两种方法: 1).linux系统调用 2).C语言库函数 前者依赖于linux系统,后者与操作系统是独立的. 在 linux系统中,所有打开的文件也对应一个数字,这个数字由 ...
- Linux下的编程实战【转】
一篇比较不错的文章, 降到了 makefile make , gcc编译器,GDB调试器, Linux文件系统,Linux文件API,.C语言库函数(C库函数的文件操作实际上是独立于具体的操作系统平台 ...
随机推荐
- μC/OS-III---I笔记9---任务等待多个内核对象和任务内建信号量与消息队列
在一个任务等待多个内核对象在之前,信号量和消息队列的发布过程中都有等待多个内核对象判断的函数,所谓任务等待多个内核对象顾名思义就是一任务同时等待多个内核对象而被挂起,在USOC-III中一个任务等待多 ...
- css variables & CSS 变量
css variables & CSS 变量 https://gist.github.com/xgqfrms-GitHub/5d022a13292c615d2730e84d909e1aba c ...
- CSS3 Animation & Weather Icons
CSS3 Animation & Weather Icons google fonts <link href='https://fonts.googleapis.com/css?fami ...
- DataBase All in One
DataBase All in One DB SQL: relational database management system NoSQL(Not only SQL / Non SQL): key ...
- navigator.geolocation.getCurrentPosition
navigator.geolocation.getCurrentPosition Geolocation API Specification 2nd Edition W3C Recommendatio ...
- PM2 in depth
PM2 in depth ecosystem.config.js module.exports = { apps : [{ name: "app", script: ". ...
- NGK项目八大板块是什么?
公链项目生态各板块中,应用生态繁荣与实体经济联系作为密切,也被看做公链平台追求的终极目标,NGK公链以实体企业粘合客户,致力于重塑金融体系,构建全球区块链生态. NGK让经济权益上链发行,目前已有八大 ...
- BGV上线两天价格超过880美金,下一个YFI已到来!
BGV自上线以来就备受币圈关注,众多投资者纷纷表示看好BGV.BGV也不负众望,在上线交易所第二天,价格就迎来了暴涨,最高价格为888.88美金,超越了当前以太坊的价值.而这也迎来了币圈众多投资者的一 ...
- Java基础篇(04):日期与时间API用法详解
本文源码:GitHub·点这里 || GitEE·点这里 一.时间和日期 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分 ...
- Spring 中的 MetaData 接口
什么是元数据(MetaData) 先直接贴一个英文解释: Metadata is simply data about data. It means it is a description and co ...