我尝试使用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
答案 0 :(得分:1)
这是因为您没有安装静态的libc++
(即libc++.a
)
在您的系统上。 Archlinux默认不安装静态库5 years ago,
因此执行完全静态的链接对于您来说将是一个挑战。你会
必须递归地为所有依赖库创建自己的静态版本。