静态链接libc ++铛

时间:2018-12-14 10:16:32

标签: c++ linux c++11 clang++ libc++

我尝试使用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

1 个答案:

答案 0 :(得分:1)

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