我错误地使用了此命令,该命令在链接步骤中失败:
$ clang -std=c++11 -stdlib=libc++ myInputFile.cpp
Can anyone explain why clang provides a C++ language option, and why it fails to link?为什么选项-x c++
或-std=c++11
不能实现与clang++
相同的功能?谢谢
我错误地使用了此命令,该命令在链接步骤中失败:
$ clang -std=c++11 -stdlib=libc++ myInputFile.cpp
Can anyone explain why clang provides a C++ language option, and why it fails to link?为什么选项-x c++
或-std=c++11
不能实现与clang++
相同的功能?谢谢
从技术上讲,名为clang
或clang++
的程序都不是编译器:它们都是drivers,它们分析输入参数并确定使用什么命令行参数在哪些文件上调用哪些编译器/汇编器/链接器.两者之间的唯一区别是,如果C标准库执行链接,则仅针对C标准库的clang
个链接,而针对C++和C标准库的clang++
个链接.
-x=<language>
选项覆盖驱动程序用于确定源文件语言的试探法,它指示驱动程序调用编译器<language>
.
-std=<dialect>
选项 Select 要使用的特定语言的方言.如果需要确保C++程序是可移植到旧的C++ 98编译器,则可以用-std=c++98
编译它.-std
只适用于目标语言:它不会try 编译如C++或C++的汇编程序或java,而只是驱动程序认为是C++的源文件.
简而言之,有两个不同的驱动程序可以方便地 Select 要链接的库.编译C++但不链接到C++标准库有合理的用例.