创建符号链接失败

4

我正在尝试在我的 CentOS 6.7 机器上升级 glibcxx。我按照这里的步骤进行了操作。

现在,当我执行以下命令时:

strings /opt/google/chrome/lib/libstdc++.so.6 | grep GLIBC

我列出了 GLIBCXX_3.4 至 GLIBCXX_3.4.22。

为了在我的 Syantaxnet 构建中使用此文件,我创建了一个符号链接:

ln -s /opt/google/chrome/lib/libstdc++.so.6 /usr/lib64/libstdc++.so.6

但是我遇到了一个错误:
ln: creating symbolic link `/usr/lib64/libstdc++.so.6': File exists

编辑1:

我认为错误是由于文件名相同,于是将/opt/google/chrome/lib/libstdc++.so.6重命名为libstdc++.so.6_new。但命令仍然失败。

有人能帮我解决这个问题吗?另外,这是解决错误的方法吗:

/usr/local/bin/bazel: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/local/bin/bazel)
/usr/local/bin/bazel: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/bin/bazel)

你尝试过倒转给 ln -s 的文件名顺序吗? - Bruno Negrão Zica
是的,我试过了,但是还是出现了同样的错误。不管怎样,我将 /opt/google/chrome/lib/libstdc++.so.6 文件的内容复制到了 /usr/lib64/libstdc++.so.6 中,然后就可以正常工作了。感谢您的时间! - kskp
看起来这不再是符号链接问题,因为您似乎已经解决了它。您面临的问题是系统中缺少GLIBCXX_3.4.XX。请参考此链接以获取指示。希望这可以帮到您! - rurtle
2个回答

10

我以为错误是由于相同的文件名

错误提示您 /usr/lib64/libstdc++.so.6 已经存在。

如果您想要替换它,可以执行以下操作:

ln -sf /opt/google/chrome/lib/libstdc++.so.6 /usr/lib64/libstdc++.so.6

或者这样:

rm -f /usr/lib64/libstdc++.so.6
ln -s /opt/google/chrome/lib/libstdc++.so.6 /usr/lib64/libstdc++.so.6

将 /opt/google/chrome/lib/libstdc++.so.6 改名为 libstdc++.so.6_new。

那样做是完全错误的。在尝试修复它之前,应该先尝试理解错误提示的含义。

我复制了 /opt/google/chrome/lib/libstdc++.so.6 文件的内容到 /usr/lib64/libstdc++.so.6 中,然后它就可以工作了。

这种方法有一个缺点:如果更新了 /opt/google/chrome/lib/libstdc++.so.6/usr/lib64 中的副本不会更新。你可能应该使用上面提到的 ln -sf 命令。


1
针对Linux操作系统: 1. 首先检查在/etc/httpd/sites-enabled/文件夹中是否存在yoursite.conf文件。 2. 如果有,则先复制该文件, 3. 然后删除默认的yoursite.conf文件,使用rm yourfile.conf命令进行删除, 4. 最后使用以下命令创建链接:ln -s /etc/httpd/sites-available/yoursites.conf /etc/httpd/sites-enabled/yoursites.conf。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接