认真地遵循swift.org在Linux上的安装说明后,我遇到了一个问题,即无法在Ubuntu 18.04计算机上编译任何内容。 REPL似乎可以正常工作,但是在编译期间(调用swift build
时),出现以下错误:
/usr/bin/ld: cannot find -lstdc++
完整的错误报告[SR-9093]中有更多详细信息。我根本不知道该怎么做才能解决此问题,其他错误报告中已经提到了类似的问题,例如关于这个非常老的报告[SR-35]。
我该怎么办?
谢谢
答案 0 :(得分:4)
我假设您已经成功安装了 libstdc ++ ,并且您已经正确设置了权限。但我真的怀疑它是否正确安装,但安装时出现某种损坏。发生损坏是因为您没有通过程序包管理器安装libstdc ++。结果是程序包管理器数据库中出现某种形式的怪异现象,从而影响了整个功能系统。正是为什么将某些内容添加到文件夹应该彻底改变任何内容。我不知道为什么会这样,除非文件夹是热的,即象征性地链接到一个程序,该程序对黑客没有任何容忍性,例如仅将文件复制到文件夹中。因此,暂时尝试再次安装 libstdc ++ 。以下是该文件的链接,该文件可再次下载正确的程序,并且与amd64兼容。
http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
以下是一些帮助链接
答案 1 :(得分:2)
安装libstdc ++
sudo apt install libstdc++6
答案 2 :(得分:0)
可能似乎apt安装未运行ldconfig
程序,应该运行该程序才能将库添加到ld.so
知道的程序列表中。
您似乎可以手动进行操作:
sudo ldconfig
重要: CAVEAT :我没有Ubuntu,也无法对其进行测试。这是一个
sudo
命令。运行风险自负,YMMV等。
如果这不起作用,则可能未设置名为/etc/ld.so.conf
的文件来搜索libstdc ++最终所在的目录。我不敢描述如何解决这个问题。
答案 3 :(得分:-2)
sudo apt install -f
上面的命令应该安装所有缺少的依赖项。