• 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
    笨鸟先飞
  • 相关阅读:
    少走弯路,一个老程序猿谈PHP职业发展规划
    Wireshark网络分析就这么简单
    MySQL高可用架构之MHA
    一般项目的开发流程(公司之间是有差异)
    Java EE大作业之创造class类出现问题-------Implicit super constructor Object() is undefined for default constructor. Mu
    三层架构与MVC
    Android仿QQ界面
    Android之侧滑导航栏
    Android滑动删除功能
    资源链接
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12542728.html
Copyright © 2020-2023  润新知