Unix 真正的so文件和ln-s之间有什么区别

Unix 真正的so文件和ln-s之间有什么区别,unix,shared-libraries,Unix,Shared Libraries,例如,我的目录如下所示: lib | +--foo.so +--bar.so -> bar.so.1.0.0.0 +--bar.so.1.0.0.0 /path/to/lib | +--foo.so +--bar.so +--bar.so.1.0.0.0 这两种方式总是一样的吗 我问这个问题的原因是我发现当我 cp -r lib /path/to/ 新目录如下: lib | +--foo.so +--bar.so -> bar.so.1.0.0.0 +--bar.so.

例如,我的目录如下所示:

lib
|
+--foo.so
+--bar.so -> bar.so.1.0.0.0
+--bar.so.1.0.0.0
/path/to/lib
|
+--foo.so
+--bar.so
+--bar.so.1.0.0.0    
这两种方式总是一样的吗

我问这个问题的原因是我发现当我

cp -r lib /path/to/
新目录如下:

lib
|
+--foo.so
+--bar.so -> bar.so.1.0.0.0
+--bar.so.1.0.0.0
/path/to/lib
|
+--foo.so
+--bar.so
+--bar.so.1.0.0.0    

so
ls-s
之间的区别是文件和符号链接之间的区别。符号链接类似于其他文件的别名,对它们的操作会导致链接文件的更改。当您执行
cp
操作时,它会将链接文件复制到以链接名作为文件名的目标目录,即,当打开符号链接进行复制时,它会读取链接文件。因此,请丢失链接,取而代之的是获取链接文件的副本。如果使用
cp
命令的
-P
选项,则可以保留符号链接信息

cp -P lib /path/to/

so
ls-s
之间的区别是文件和符号链接之间的区别。符号链接类似于其他文件的别名,对它们的操作会导致链接文件的更改。当您执行
cp
操作时,它会将链接文件复制到以链接名作为文件名的目标目录,即,当打开符号链接进行复制时,它会读取链接文件。因此,请丢失链接,取而代之的是获取链接文件的副本。如果使用
cp
命令的
-P
选项,则可以保留符号链接信息

cp -P lib /path/to/

“cp-a lib/path/to/”解决了这个问题吗?虽然从标题中看不出会是这样,但我认为您会发现一些有用的信息;这是关于共享对象的版本号。@JonathanLeffler感谢您有用的外部知识。“cp-a lib/path/to/”是否解决了这个问题?虽然从标题中看不出会是这样,但我认为您会发现一些有用的信息;这是关于共享对象的版本号的。@JonathanLeffler感谢您有用的外部知识。