1 背景
在linux
环境下,我们常使用软链接来实现动态库的复用和版本控制,比如现在有一个动态库a.so
,我们有以下几个需求:
- 用户能随意升级替换动态库
- 用户可以很方便的观察到动态库的版本
- 替换动态库后应用无需额外操作
为满足上述需求,我们建立以下软链接:
- 源文件
a.so.1.2.3
- 软链接
a.so.1 -> a.so.1.2.3
- 软链接
a.so -> a.so.1
这样:当用户想升级时,只需要替换a.so.1.2.3
为a.so.1.2.4
并重新建立软链接a.so.1 -> a.so.1.2.4
。而程序仅关注a.so
,因此无需额外操作。
但是当我们使用cp命令拷贝软链接时,我们可能会发现源文件被拷贝走了。
2 解决方法
可以使用cp
命令中的-d
参数,此时拷贝后会发现并不是源文件被拷贝过去,而是软链接了。