参考博文链接:

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库文件编程的更多相关文章

  1. linux库文件编写入门(笔记)

    linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...

  2. 查看linux库文件32位还是64位

    查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a  *.a objdump -a  *.so

  3. Linux库文件路径的添加

    库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用 ...

  4. linux 库文件配置

    linux 库文件配置 /etc/ld.so.conf 或 /etc/ld.so.conf.d/*.conf

  5. 【Linux技术】linux库文件编写·入门

    一.为什么要使用库文件 我们在实际编程中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: //U ...

  6. linux库文件的制作

    一.为什么要使用库文件 我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同, 实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: ...

  7. Linux 库文件详解

    转自: http://www.cppblog.com/deane/articles/165216.html http://blog.sciencenet.cn/blog-1225851-904348. ...

  8. linux文件编程----系统调用

    linux中文件编程可以使用两种方法: 1).linux系统调用 2).C语言库函数 前者依赖于linux系统,后者与操作系统是独立的. 在 linux系统中,所有打开的文件也对应一个数字,这个数字由 ...

  9. Linux下的编程实战【转】

    一篇比较不错的文章, 降到了 makefile make , gcc编译器,GDB调试器, Linux文件系统,Linux文件API,.C语言库函数(C库函数的文件操作实际上是独立于具体的操作系统平台 ...

随机推荐

  1. LCIS(最长公共上升子序列)模板

    求出LCIS并输出其路径. 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #inc ...

  2. JavaScript 注释规范

    JavaScript 注释规范 总原则 As short as possible(如无必要,勿增注释).尽量提高代码本身的清晰性.可读性. As long as necessary(如有必要,尽量详尽 ...

  3. how to fetch a group promise api in order with the returned resolved result

    how to fetch a group promise api in order with the returned resolved result promise 一组依次请求,generator ...

  4. Firewall & Network Security

    Firewall & Network Security 防火墙 & 网络安全 NAT Gateway VPC Virtual Private Cloud refs https://en ...

  5. IndexedDB All In One

    IndexedDB All In One https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API https://develope ...

  6. Glibc堆管理机制基础

    最近正在学习linux下堆的管理机制,收集了书籍和网络上的资料,以自己的理解做了整理,做个记录.如果有什么不对的地方欢迎指出! Memory Allocator 常见的内存管理机制 dlmalloc: ...

  7. 使用Reactor完成类似的Flink的操作

    一.背景 Flink在处理流式任务的时候有很大的优势,其中windows等操作符可以很方便的完成聚合任务,但是Flink是一套独立的服务,业务流程中如果想使用需要将数据发到kafka,用Flink处理 ...

  8. MVCC多版本并发控制器

    在多个事务并发执行的时候,MVCC机制可以协调数据的可见性,事务的隔离级别就是建立在MVCC之上的: MVCC机制通过undo log链和ReadView机制来实现: undo log版本链: 在数据 ...

  9. Youcans 的第一篇博客

    这是我的第一篇博客. 今后我会将我的学习心得和总结在这里发布,与大家共享,共勉.

  10. Win10下ctrl与alt键互换

    我之前尝试过用第三方软件修改,但是总是不成功,后来发现直接去修改注册表也不麻烦,记录一下步骤. win + r 输入 regedit 进到这个路径 点击Keyboard Layout 右键,新建一个 ...