zoukankan      html  css  js  c++  java
  • 静态函数库设计

    在程序设计中离不开函数的调用,函数分为库函数、系统调用,库函数由glibc库提供,系统调用由Linux内核提供。函数库分为静态链接库和动态链接库。

    静态链接库特点:程序所要用到的库函数代码在链接时全部被copy到程序。静态链接库以*.a为后缀,以*.so.*为动态链接库,Linux系统中主要库位于/lib和/usr/lib目录下。

    步骤:

    方法一:

    1、安装静态函数库,由于redhat Linux默认不提供静态函数库,所以我们自己安装。glibc-static-2.12-1.80.el6.i686.rpm,安装rpm -ivh glibc-static-2.12-1.80.el6.i686.rpm。

    2、编辑mylib.c文件,在文件中实现一个加法函数int add(int a,int b)。

    3、只编译不链接mylib.c文件,gcc -c mylib.c -o mylib.o

    4、将编译处的mylib.o文件打包成静态链接库,执行命令 ar cqs libmylib.a mylib.o。

    5、将libmylib.a文件复制到/usr/lib目录下。

    6、编写test.c测试程序,在程序中调用刚制作的静态链接库函数。

    #include<stdio.h>

    int main()

    {

      printf("1+2=%d ",add(1,2));

      return 0;

    }

    7、编译test.c并且指定依赖的库,执行命令"gcc -static test.c -lmylib -o test"。

    8、运行编译好的test可执行程序。

    方法二

    1、编辑taxlib.c文件,里面就是函数的实现。

    2、编译但不链接taxlib.c文件,gcc -c taxlib.c -o taxlib.o

    3、将编译出的taxlib.o打包成静态链接库,使用命令:ar cqs libtaxlib.a taxlib.o

    4、将libtaxlib.a复制到/usr/lib目录下。

    5、在当前目录下创建tax.h文件,将tax函数原型定义在该头文件中,int tax(int salary,int insurance);

    6、编辑mytax.c文件

    #include<stdio.h>

    #include"tax.h"

    int main()

    {

      printf("i need tax:%d ",tax(9000,1200));

      return 0;

    }

    7、编译mytax.c并且指定依赖的库

    gcc -static mytax.c  -ltaxlib -o mytax

    8、运行mytax可执行程序。

    总结:“-c”编译选项,只对程序做编译,不链接。“- static ”编译选项,静态编译程序。"-l"编译选项,指定被编译的程序所依赖的库文件。

    ar cqs lib(静态库名).a 被制作的库文件(*.o)。

  • 相关阅读:
    Python标准库:内置函数dict(**kwarg)
    如何把 excel 的数据导入到数据库里面去
    正在载入数据中效果
    站点公司亚马逊砸了10亿也没能做成智能手机,技术是须要沉淀和积累的
    零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
    【C语言】在两个数成对出现的数组中找到一个单独的数。
    3.跟我学solr---使用solrj加入索引
    使用CAShapeLayer的path属性与UIBezierPath画出扫描框
    UI设计四要素
    swift 工作日志
  • 原文地址:https://www.cnblogs.com/gary-guo/p/5554556.html
Copyright © 2011-2022 走看看