上一篇
在Linux开发中,库(Library)是代码复用的核心。无论是系统调用还是第三方功能,都离不开库的支持。想要从小白晋升为大牛,深入理解Linux库制作、动态链接、静态链接以及链接器加载的原理是必经之路。
在深入链接之前,我们需要知道一个C/C++源文件是如何变成可执行文件的。它经历四个阶段:
静态库(Static Library,通常以 .a 结尾)在链接阶段会被完整地复制到可执行程序中。
优点:程序运行时不依赖外部库,迁移方便。
缺点:浪费内存空间(每个程序都含有一份副本),更新库需要重新编译整个程序。
# 制作静态库步骤gcc -c mylib.c -o mylib.oar rcs libmylib.a mylib.o# 使用静态库gcc main.c -L. -lmylib -o app
动态库(Shared Library,通常以 .so 结尾)在程序启动或运行时才被加载。链接阶段只在可执行文件中保存了符号表等信息,而不拷贝实际代码。
优点:节省内存(多个程序共用内存中的一份库),更新方便(替换 .so 文件即可)。
缺点:运行时需要确保库路径正确。
# 制作动态库步骤gcc -fPIC -c mylib.c -o mylib.ogcc -shared -o libmylib.so mylib.o# 使用动态库gcc main.c -L. -lmylib -o app
当我们在Linux下运行一个动态链接的可执行文件时,链接器加载器(ld-linux.so)会负责将所需的动态库加载到内存中。系统会按照以下顺序寻找库文件:
LD_LIBRARY_PATH 指定的路径。/etc/ld.so.conf 配置文件中的路径。/lib 和 /usr/lib。本文涉及的核心关键词:Linux库制作、动态链接、静态链接、链接器加载。掌握这些概念,你就能轻松解决“找不到库文件”或“符号未定义”等各种常见的Linux编程报错问题了。
本文由主机测评网于2026-04-03发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20260433451.html