我试图使用Clang在Linux(使用此AUR https://libcxx.llvm.org/的Arch)中静态链接标准库libc++(https://aur.archlinux.org/packages/libc%2B%2B/)。

我收到错误/usr/bin/ld: cannot find -lc++
该错误与代码无关,甚至在“Hello World”中也会出现。

如果删除-static选项,它将编译(和链接),并且生成的可执行文件有效。

我不想使用libstdc++(我有理由不对此进行讨论),并且链接必须是静态的(这是必需的)。

我完全意识到,如果无法访问发生这种情况的机器,则很难调试这些内容。但是,碰巧它是两台不同的机器(都与Arch一起使用),所以也许这是我忘记的事情。

到目前为止,我已经尝试了什么(https://releases.llvm.org/7.0.0/projects/libcxx/docs/UsingLibcxx.html)

应该起作用的基本命令如下clang++ -static -stdlib=libc++ -std=c++17 main.cpp -lc++abi

最佳答案

那是因为您没有安装静态libc++(即libc++.a)
在您的系统上。 Archlinux默认不安装静态库5 years ago
因此执行完全静态的链接对您来说将是一个挑战。你会
必须递归地为所有依赖库创建自己的静态构建。

关于c++ - 静态链接libc++铛,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53777680/

10-13 06:30