【问题标题】:How to link libstdc++ statically with clang++如何将 libstdc++ 与 clang++ 静态链接
【发布时间】:2012-12-03 08:28:31
【问题描述】:

我正在尝试通过阅读 STL 的源代码并对其进行调试来更深入地学习 C++,因此我想将 libstdc++ 静态链接到我的程序,并且使用 g++ 可以正常工作。但是,如何在 llvm 中使用 clang++ 实现相同的效果?

另一个问题是,clang++ 相当于 -static-libgcc 是什么?

Makefile我正在使用

CXX=g++
CC=g++
LDFLAGS=-g -O0 -static-libgcc
CFLAGS=-O0 -Wall
CXXFLAGS=$(CFLAGS)

【问题讨论】:

  • 我不认为静态链接是你需要的。您需要有库的调试信息,无论它是静态的还是动态的。你可以在不同的 Linux 发行版的不同地方找到它;有些有带有调试信息的静态库,有些在某处有未剥离的共享库,有些只是共享库的调试信息(例如 Debian/Ubuntu 通常这样做)。
  • 我在 g++ 中尝试过,并且静态链接有效,我想这是因为我的 libstdc++.a 没有被剥离,而 libstdc++.dylib 是。你的意思是我应该找到一个没有被剥离的共享库?

标签: llvm clang static-linking


【解决方案1】:

您在 GCC 和 Clang 中寻找的标志是:-static-libstdc++

【讨论】:

  • 这会在 Clang 4.2 中给出警告“编译期间未使用的参数:'-static-libstdc++'”。
  • clang++ 版本 4.2.1 在 CentOS 7 上说 clang: warning: argument unused during compilation: '-static-libstdc++' 并且没有发生静态链接 - 有什么方法可以解决它?
  • 这是一个链接时标志,而不是编译时标志。如果您查看问题,-static-libgcc 标志被添加到 LDFLAGS 变量中,这也是应该添加的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多