链接库
# 简介
一般常听说动态链接库和静态链接库。
首先说一说在 java 和 nodejs 中的库,这些库都是以源码或者中间代码存在。
比如在 nodejs 中,npm 包可以发布到 npmjs.com 中,然后使用npm install
来下载依赖的第三方 npm 包。而 npm 包中都是源码。
这是因为在执行 nodejs 代码时,执行方式是node xxx.js
。注意到 node 命令后是直接使用的 js 源代码,并不存在中间代码。
相对的 java 环境中,假设我们编写了一个简单的 Hello.java 文件,必须要先javac Hello.java
编译成Hello.class
文件,然后才能执行java Hello
。
所以当我们想要发布一个 java 库时,就需要发布成 class 文件。这里需要明确 java 中的 import 和 export 具体规则。
但是如果时 c 或者 c++语言,又不一样了,c 或者 c++是直接编译成机器码的,并不是中间代码。所谓静态链接库是指我们的代码在编译完成后,在链接阶段把依赖的第三方库直接包含进来变成一整个可执行文件。
其缺点是每个程序都有自己的静态链接库,并不会复用。相反动态链接库则是可以复用的,并不会打包进可执行文件。这里涉及到如何寻找动态链接库的机制。公共链接库和私有链接库,链接库如何发布的问题。
Linux 中的动态链接库和静态链接库是干什么的? - wuxinliulei 的回答 - 知乎 (opens new window)
编辑 (opens new window)
上次更新: 2023/08/22, 17:17:59