<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>C/C++ on MeerStory</title><link>https://linux.meerstory.com/zh/categories/c/c++/</link><description>Recent content in C/C++ on MeerStory</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 12 Oct 2026 01:57:07 +0900</lastBuildDate><atom:link href="https://linux.meerstory.com/zh/categories/c/c++/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux ar 命令详解：构建静态库与常见避坑指南</title><link>https://linux.meerstory.com/zh/ubuntu/20261012_015617_47/</link><pubDate>Mon, 12 Oct 2026 01:57:07 +0900</pubDate><guid>https://linux.meerstory.com/zh/ubuntu/20261012_015617_47/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>在 Linux 平台进行 C/C++ 工程开发时，静态链接库（&lt;code>.a&lt;/code> 文件）是模块化分发代码的核心载体，而 &lt;code>ar&lt;/code>（archive）则是操纵这类二进制归档不可或缺的底层利器。本文将深入剖析静态库的完整生命周期：从基础的目标文件打包、成员提取与裁剪，到符号索引机制（&lt;code>ranlib&lt;/code>）的运作原理，并针对工程构建中极易踩坑的链接符号缺失问题给出切实可行的排查策略。&lt;/p>
&lt;h2 id="搭建实验环境与生成目标文件o">搭建实验环境与生成目标文件（.o）&lt;/h2>
&lt;p>为了获取归档工具 &lt;code>ar&lt;/code> 及后续编译所需的编译器，首先通过系统的包管理器安装 &lt;code>binutils&lt;/code> 套件与 &lt;code>gcc&lt;/code>，执行指令 &lt;code>apt-get update -qq &amp;amp;&amp;amp; apt-get install -y binutils gcc&lt;/code>。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261012_015617_47/captures/s01_c01_apt-get_update_-qq____apt-get_install_-y_binutils.png"
 alt="更新包索引并安装 binutils 与 gcc 编译器"
 
 loading="lazy"
 decoding="async"
 style="max-width: 100%; height: auto;">


&lt;/p>
&lt;p>为了隔离后续生成的测试代码与二进制制品，利用 &lt;code>mkdir -p /tmp/ar_demo &amp;amp;&amp;amp; cd /tmp/ar_demo&lt;/code> 新建临时工作区并直接切换进去。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261012_015617_47/captures/s01_c02_mkdir_-p__tmp_ar_demo____cd__tmp_ar_demo.png"
 alt="创建隔离的测试目录并切入路径"
 
 loading="lazy"
 decoding="async"
 style="max-width: 100%; height: auto;">


&lt;/p>
&lt;p>接下来编写用于演示的数学函数源码。通过 &lt;code>echo 'int add(int a, int b) { return a + b; }' &amp;gt; math_add.c&lt;/code> 快速生成加法模块的源文件。&lt;/p>
&lt;p>&lt;img src="https://linux.meerstory.com/ubuntu/20261012_015617_47/captures/s01_c03_echo__int_add_int_a__int_b____return_a___b_______m.png"
 alt="写入加法函数实现至 math_add.c"
 
 loading="lazy"
 decoding="async"
 style="max-width: 100%; height: auto;">


&lt;/p>
&lt;p>同理，使用 &lt;code>echo 'int sub(int a, int b) { return a - b; }' &amp;gt; math_sub.c&lt;/code> 创建包含减法运算逻辑的源文件。&lt;/p></description></item></channel></rss>