认真遵循 swift.org 在 Linux 上的安装说明后,我遇到了无法在 Ubuntu 18.04 机器上编译任何内容的问题。 REPL 似乎可以工作,但在编译期间(调用
swift build
时)出现以下错误:
/usr/bin/ld: cannot find -lstdc++
完整错误报告[SR-9093]中有更多详细信息。我根本不知道该怎么解决这个问题,其他错误报告中已经提到了类似的问题,例如这个非常旧的[SR-35]。
我该怎么办?
我假设您已经成功安装了 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
下面是一些帮助链接
安装libstdc++
sudo apt install libstdc++6
似乎可能 apt install 没有运行
ldconfig
程序,应该运行该程序以将库添加到 ld.so
知道的列表中。
看起来你可以手动完成:
sudo ldconfig
重要 警告:我没有 Ubuntu,无法对此进行测试。这是一个
命令。运行风险自负,YMMV 等sudo
如果这不起作用,可能是未设置名为
/etc/ld.so.conf
的文件来搜索 libstdc++ 所在的目录。我不敢尝试描述如何解决这个问题。
sudo apt install -f
上面的命令应该安装任何缺少的依赖项。