欢迎光临
我们一直在努力

Linux动静态库开发基础:静态库与动态库的编译构建、链接使用及问题排查

文 章 目 录

  • 一、静 态 库
    • 1、背 景
    • 2、原 理
    • 3、静 态 库 的 流 程
      • (1)编 写 者
      • (2)使 用 者
      • (3)简 化 gcc 编 译 选 项
      • (4)myerrno 问 题
      • (5)结 论
  • 二、动 静 态 库
    • 1、编 写 者
    • 2、使 用 者
    • 3、加 载 找 不 到 动 态 库
  • 三、总 结

💻作 者 简 介:曾 与 你 一 样 迷 茫,现 以 经 验 助 你 入 门 Linux。 💡个 人 主 页:@笑口常开xpr 的 个 人 主 页 📚系 列 专 栏:Linux 探 索 之 旅:从 命 令 行 到 系 统 内 核 ✨代 码 趣 语:静 态 库 是 装 满 工 具 的 箱 子,编 译 时 全 塞 程 序,方 便 但 沉;动 态 库 是 共 享 架,记 位 置,没 工 具 就 卡 壳。 💪代 码 千 行,始 于 坚 持,每 日 敲 码,进 阶 编 程 之 路。 📦gitee 链 接:gitee

在这里插入图片描述          在 Linux C/C++ 开 发 中,库 是 代 码 复 用 和 工 程 化 的 核 心。不 少 开 发 者 会 遇 到 源 码 泄 露、编 译 “找 不 到 头 文 件 / 库”、动 态 库 运 行 加 载 失 败 等 问 题,本 质 是 对 库 的 流 程 不 熟 悉。本 文 从 背 景 切 入,先 讲 静 态 库 的 原 理、制 作 与 使 用,再 讲 动 态 库 的 实 战 技 巧,帮 你 掌 握 库 的 全 流 程 应 用。


一、静 态 库

1、背 景

         设 计 一 个 静 态 库 并 将 已 经 写 好 的 代 码 给 别 人 用。有 两 种 方 法:

  • 把 源 文 件 给 他
  • 把 源 代 码 打 包 成 库,必 须 提 供 头 文 件。头 文 件 的 本 质 是 库 文 件 的 说 明 书。
  • libxxx.a – – – 静 态 链 接 libxxx.so – – – 动 态 链 接


    2、原 理

    在这里插入图片描述


    3、静 态 库 的 流 程

    (1)编 写 者

  • 编 写 源 代 码(不 包 括 main 函 数)。
  • mymath.h

    #pragma once

    #include<stdio.h>

    extern int myerrno;
    int add(int x,int y);
    int sub(int x,int y);
    int mul(int x,int y);
    int div(int x,int y);

    mymath.c

    #include\”mymath.h\”

    int myerrno = 0;
    int add(int x,int y)
    {


    return x + y;
    }
    int sub(int x,int y)
    {


    return x – y;
    }
    int mul(int x,int y)
    {


    return x * y;
    }
    int div(int x,int y)
    {


    if(y == 0)
    {


    myerrno = 1;
    return –1;
    }
    return x / y;
    }

    makefile

    赞(0)
    未经允许不得转载:171主机测评 » Linux动静态库开发基础:静态库与动态库的编译构建、链接使用及问题排查
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址