共享对象末尾的@符号是什么意思?

What does @ symbol at the end of a shared object mean?

我正在使用 Ubuntu,当我在 /usr/lib/ 下列出库时,我看到其中一些库的末尾有数字 and/or @ 符号。例如 libgc.so.1@ 或 libgettextlib.so@ 有谁知道这是什么意思吗?

ls 命令会根据 ls 的版本和您为其提供的选项,尝试为您提供一些有关其所列名称性质的提示。

例如,有时会添加尾随 / 以表示该对象是一个目录。尾随 @ 表示它是一个符号 link。 ls -l 将显示引用的文件。

什么是符号 link ?符号link是一个文件,其内容不是您可以随意使用的数据,而是另一个文件的名称。因此,当您尝试操作符号 link 时,系统会操作它所引用的文件。这是一个间接的。还有 links 稍微更完整,对你来说更像是一个别名。

以下是实验方法

$ touch foo
$ ln -s foo bar
$ ls -l foo bar
lrwxr-xr-x  1 yunes  wheel  3 16 jan 10:45 bar -> foo
-rw-r--r--  1 yunes  wheel  0 16 jan 10:45 foo

这意味着 foo 是一个文件(实际上是空的),而 bar 不是一个普通文件而是一个 name 指向 foo。现在:

$ echo "hello" >> foo
$ cat foo
hello
$ cat bar
hello
$

这是为了向您展示使用 foobar 几乎是一样的...