zoukankan      html  css  js  c++  java
  • 静态库和共享库(动态库)的制作和使用

    静态库的制作和使用

    1. 建立如下几个文件夹和文件

    include  lib  main.c  src

    include文件夹下包含如下文件

    func.h
    int sum(int a, int b);
    int sub(int a, int b);
    int mul(int a, int b);
    int div(int a, int b);
    func.h

    src文件夹下包含如下文件

    add.c  div.c  mul.c  sub.c
    #include"func.h"
    
    int add(int a, int b)
    {
            return a + b;
    }
    add.c
    #include"func.h"
    
    int div(int a, int b)
    {
            return a / b;
    }
    div.c
    #include"func.h"
    
    int mul(int a, int b)
    {
            return a * b;
    }
    mul.c
    #include"func.h"
    
    int sub(int a, int b)
    {
            return a - b;
    }
    sub.c

    main.c 文件

    #include <stdio.h>
    #include "func.h"
    
    int main()
    {
            int a = 100;
            int b = 10;
            printf("a = %d, b = %d
    ", a, b);
            printf("a + b = %d
    ", add(a,b));
            printf("a - b = %d
    ", sub(a,b));
            printf("a * b = %d
    ", mul(a,b));
            printf("a / b = %d
    ", div(a,b));
            return 0;
    }
    main.c

    2. 编译源文件

    cd src
    gcc *.c -c -I../include

    得到:

    add.c  add.o  div.c  div.o  mul.c  mul.o  sub.c  sub.o

    3. 打包 .o 文件生成静态库并将其移入lib文件夹下

    ar rcs libMyCalc.a *.o
    mv libMyCalc.a ../lib

    4. 编译 main.c 文件生成可执行文件 result

    //方法1
    gcc main.c lib/libMyCalc.a -o result -Iinclude

    //方法2
    gcc main.c -Iinclude -L lib -l MyCalc -o result

    执行 result 得到如下结果

    a = 100, b = 10
    a + b = 110
    a - b = 90
    a * b = 1000
    a / b = 10
    View Code

    共享库的制作和使用

    gcc -fPIC -c *.c -I../include
    gcc -shared -o libMyCalc.so *.o -I../include
    gcc main.c lib/libMyCalc.so -o result -Iinclude
  • 相关阅读:
    [译] 关于CSS中的float和position
    【规范】前端编码规范——注释规范
    【规范】前端编码规范——jquery 规范
    【规范】前端编码规范——javascript 规范
    【规范】javascript 变量命名规则
    如何使用TestFlight进行Beta测试
    i o s 崩溃日志分析
    CocoaPods安装和使用教程
    iOS 程序切换后台
    iOS 百度地图获取当前地理位置
  • 原文地址:https://www.cnblogs.com/xumaomao/p/13046557.html
Copyright © 2011-2022 走看看