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

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

文 章 目 录

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


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


一、静 态 库

1、背 景

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

  1. 把 源 文 件 给 他
  2. 把 源 代 码 打 包 成 库,必 须 提 供 头 文 件。头 文 件 的 本 质 是 库 文 件 的 说 明 书。

libxxx.a - - - 静 态 链 接
libxxx.so - - - 动 态 链 接


2、原 理

在这里插入图片描述

3、静 态 库 的 流 程

(1)编 写 者

  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

Read more

JDK 21 G1 vs ZGC 垃圾收集器对比分析

引言 在 JDK 21 中,Java 虚拟机 (JVM) 提供了多种垃圾收集器 (GC) 选项,其中 G1 (Garbage-First) 和 ZGC (Z Garbage Collector) 是两种备受关注的低延迟垃圾收集器。本文将深入对比这两种垃圾收集器,从原理、性能特性、适用场景、配置参数以及实际应用等方面进行详细分析,帮助开发者根据应用需求选择合适的垃圾收集器。 G1 垃圾收集器概述 基本原理 G1 是 Oracle JDK 中的一种分代垃圾收集器,自 JDK 7u4 引入,JDK 9 起成为默认 GC。它将堆内存划分为多个大小相等的 Region (区域),每个 Region 可以是 Eden、Survivor、

By Ne0inhk

Spring Boot 版本怎么选?2/3/4 深度对比 + 迁移避坑指南(含 Java 8→21 适配要点)

Spring Boot 版本怎么选?2/3/4 深度对比 + 迁移避坑指南(含 Java 8→21 适配要点) 大家好,我是重阳。今天是2026年1月22日,Spring Boot 已经进入4.0时代。作为 Java 生态的核心框架,Spring Boot 的版本选择直接影响项目的稳定性、性能和维护成本。Spring Boot 2.x(2018年发布)是许多老项目的基石,3.x(2022年)带来了 Jakarta EE 和 Native 支持,而4.0(2025年11月GA)则聚焦模块化、Java 25优化和云原生增强。根据 Spring

By Ne0inhk
【2026 最新】Java 与 IntelliJ IDEA 详细下载安装教程 带图演示(Windows 版)

【2026 最新】Java 与 IntelliJ IDEA 详细下载安装教程 带图演示(Windows 版)

前言 Java 是全球最广泛使用的编程语言之一,适用于企业级应用、Android 开发、大数据处理和后端服务。而 IntelliJ IDEA(简称 IDEA)作为 JetBrains 公司推出的旗舰级 Java IDE,凭借卓越的智能代码补全、深度框架集成、强大的调试器和流畅的用户体验,被广大开发者誉为“最强 Java 开发工具”。 本教程专为 Windows 系统用户 编写,将手把手指导你完成 Java Development Kit (JDK) 和 IntelliJ IDEA 的下载、安装与基础配置,助你快速搭建专业的 Java 开发环境。 一、Java(JDK)下载与安装 💡 注意:开发 Java 程序需要安装 JDK(

By Ne0inhk
县域烟花禁燃监管 GIS 实践:基于 Java 与高德地图的销售点盘点 —— 以新晃县为例

县域烟花禁燃监管 GIS 实践:基于 Java 与高德地图的销售点盘点 —— 以新晃县为例

目录 一、前言 1. 背景描述 2. 聚焦新晃县 二、Java 实现高德检索 1. 接口定义 核心接口参数定义 2. 数据获取 核心实现代码 POI类说明 三、成果展示 1. Excel 展示 2、表格展示         四、总结 一、前言 1. 背景描述         春节期间烟花爆竹禁燃禁放是保障公共安全、改善空气质量的重要举措,而禁燃政策落地的核心环节之一,是对县域范围内烟花爆竹销售点的精准盘点与动态监管。传统的人工排查方式存在效率低、数据更新不及时、空间位置可视化差等问题,难以满足县域精细化监管的需求。在高德地图中查询烟花销售专卖店的信息如下:         地理信息系统(GIS)技术能够将空间位置与业务数据深度融合,而高德地图 API 提供了成熟的地理编码、POI 检索等能力,结合 Java 语言的跨平台、

By Ne0inhk