zoukankan      html  css  js  c++  java
  • 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
    笨鸟先飞
  • 相关阅读:
    文本图片分享
    重构必备技能之条件表达式
    重构必备技能之前言
    NoSQL你知多少?
    Jsoup获取全国地区数据(省市县镇村)(续) 纯干货分享
    Jsoup获取全国地区数据(省市县镇村)
    java字符串拼接技巧(StringBuilder使用技巧)
    华为第七届无线编码大赛总结
    linux设置java环境变量与开机自启
    用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed, probable Oracle Net admin error
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12542728.html
Copyright © 2011-2022 走看看