ln命令下的阮链接和硬链接

"ln -s libtensorflow_framework.so.1 libtensorflow_framework.so" 和 "ln  libtensorflow_framework.so.1 libtensorflow_framework.so" 的区别在于:

 "ln -s" 创建的是符号链接(symbolic link),它只包含了目标文件的路径,当访问链接文件时会被重定向到目标文件。
 "ln" 创建的是硬链接(hard link),它包含了目标文件的 inode 和数据块信息,访问硬链接和目标文件是等效的。

所以主要区别有:1. 符号链接可以跨文件系统,硬链接不可以。硬链接只能在同一文件系统创建。

2. 删除目标文件后,符号链接失效,硬链接仍然可用。因为硬链接包含文件数据块的引用。

3. 符号链接可以指向目录,硬链接不可以。4. 文件的链接数等于硬链接数加上1(原文件)。符号链接不影响链接数。在我们这个案例中,使用 ln -s 创建的符号链接,它指向 libtensorflow_framework.so.1 这个文件。
如果之后删除libtensorflow_framework.so.1,libtensorflow_framework.so符号链接将失效。而如果使用ln创建硬链接,即使删除libtensorflow_framework.so.1目标文件, libtensorflow_framework.so硬链接仍然有效,因为它引用的文件数据仍然存在。所以对于库文件这样的情况,创建符号链接是更好的选择。因为我们希望的只是在链接阶段欺骗编译器使用目标库文件,而不涉及修改目标文件的数据。总之, ln -s 和 ln 的主要区别在于创建的链接类型不同,前者创建符号链接,后者创建硬链接。根据使用场景选择对应的链接类型,可以更好达到预期效果。

猜你喜欢

转载自blog.csdn.net/u010087338/article/details/131052506