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
    笨鸟先飞
  • 相关阅读:
    如何完成域名和ip地址的绑定
    如何把域名解析到网站空间IP上?
    网站和数据库分开放,可以实现吗
    访问网站出现 Directory Listing Denied This Virtual Directory
    访问网站出现 Directory Listing Denied This Virtual Directory
    免费空间上的mysql数据库怎么连接?
    我不是你的菜
    很奇怪木瓜移动一上就火了
    敏捷产业
    前端开发工具
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12542728.html
Copyright © 2011-2022 走看看