强制Clang与C++运行时链接

Gra*_*and 6 c c++ macos linker clang

我有一个包含C和C++源混合的项目.它目前在OS X上使用GCC构建.该项目具有定制的构建脚本,该脚本调用gcc命令来编译C和C++源,并单独调用链接器.

我现在正试图让它与Clang建立.

调用clang确实正确编译源文件; 它区分.c.cpp源文件,并在每种情况下编译适当的语言.不过,我在链接时遇到了问题.当调用链接器时clang,C++运行时库未链接,导致由于缺少符号而导致生成错误.

当我设置clang++为构建工具时,我可以成功链接,但这会导致编译时错误和警告; 它真的不喜欢用C++编译器编译C源代码.

clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
...
/usr/include/stdio.h:250:49: error: redefinition of parameter 'restrict'
Run Code Online (Sandbox Code Playgroud)

我必须为构建脚本指定一个工具来用作编译器/链接器,所以我需要做一个简单的替换clang代替gcc.有什么方法可以说服clang(不clang++)与C++运行时库链接?

选项如-stdlib=libc++不起作用.

bam*_*s53 8

你应该能够使用普通的链接器标志,就像你对gcc一样:clang -lc++或者clang -lstdc++取决于你想要的实现.(你应该想要libc ++)

  • @ H2CO3`-cs ++`用于libc ++,`-lddc ++`用于libstdc ++. (4认同)
  • 嗯,就是这么简单。在编译器模式下使用该工具时,我收到有关忽略 `-lc++` 标志的警告,但我可以接受。谢谢! (2认同)