我正在从源头构建一些东西。我的系统的gcc和stdlibc ++太旧了,但是我可以使用一个clang构建。默认情况下,clang使用stdlibc ++,但可以选择安装libc ++以供clang使用。
检查libc ++是否与clang一起安装的最佳方法是什么?
答案 0 :(得分:6)
检查是否安装了libc ++的最简单方法是在一个简单的程序中使用它:
clang++ -xc++ -stdlib=libc++ - <<EOF
int main(){}
EOF
如果失败,则表示您没有libc ++。
在实际应用程序中,添加用户提供的编译器和链接器选项:
clang++ $(CXXFLAGS) $(LDFLAGS) -xc++ -stdlib=libc++ - <<EOF
以便用户有机会指定libc ++安装在非标准位置。
答案 1 :(得分:5)
比@n.n更好的回答:
printf "#include <ciso646>\nint main () {}" | clang -E -stdlib=libc++ -x c++ -dM - | grep _LIBCPP_VERSION
如果打印出类似:#define _LIBCPP_VERSION 3700
的内容,那么您就拥有了libc ++。
答案 2 :(得分:2)
以下是检查库是否已安装的方法:
在终端中输入ldconfig -p | grep libc++
。使用什么系统并不重要。如果未安装libc ++,终端将不会说任何内容。如果已安装,它将显示可用的版本。
答案 3 :(得分:-1)
你可能会对gcc和clang都感到困惑。要将代码编译为C ++,您必须分别使用g++
代替gcc
clang++
而不是clang
。
我怀疑libc++
库本身是否缺失,因为几乎可以肯定某些程序依赖于它们。