在Mac上编译时,当我使用;gcc“;编译,但不使用铿锵++; 当我尝试在MAC上编译C++代码时,我会得到这个错误。 我在个人电脑上编程已经有一段时间了,但刚刚得到一台Mac笔记本电脑,可以在大学里工作,我已经习惯了。我通常使用“gcc”进行编译,但它似乎不起作用。任何帮助都将不胜感激。在此之前,我在编译时只使用“clang++”

在Mac上编译时,当我使用;gcc“;编译,但不使用铿锵++; 当我尝试在MAC上编译C++代码时,我会得到这个错误。 我在个人电脑上编程已经有一段时间了,但刚刚得到一台Mac笔记本电脑,可以在大学里工作,我已经习惯了。我通常使用“gcc”进行编译,但它似乎不起作用。任何帮助都将不胜感激。在此之前,我在编译时只使用“clang++”,c++,macos,gcc,compiler-errors,clang,C++,Macos,Gcc,Compiler Errors,Clang,或者,如果我使用“gcc”进行编译,并且代码中存在错误,那么它可以完美地工作。只有在没有错误时才会发生这种情况 Michaels MacBook Pro:C++Michael$cc HelloWorld.cpp 架构x86_64的未定义符号: “std::uu 1::locale::use_facet(std::u 1::locale::id&)const”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put

或者,如果我使用“gcc”进行编译,并且代码中存在错误,那么它可以完美地工作。只有在没有错误时才会发生这种情况

Michaels MacBook Pro:C++Michael$cc HelloWorld.cpp 架构x86_64的未定义符号: “std::uu 1::locale::use_facet(std::u 1::locale::id&)const”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::_1::ios_base::getloc()const”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::_1::基本字符串::_init(无符号长字符)”,引用自: HelloWorld-97feed.o中的std::::uu 1::ostreambuf_迭代器std::uu 1::u pad_和u输出(std::uu 1::ostreambuf_迭代器,char const*,char const*,std:u 1::ios_base&,char) “std::uu 1::basic_string::~basic_string()”,引用自: HelloWorld-97feed.o中的std::::uu 1::ostreambuf_迭代器std::uu 1::u pad_和u输出(std::uu 1::ostreambuf_迭代器,char const*,char const*,std:u 1::ios_base&,char) “std::uu 1::basic_ostream::sentry::sentry(std::u 1::basic_ostream&)”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::_1::basic_ostream::sentry::~sentry()”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “标准::_1::cout”,引用自: _HelloWorld-97feed.o中的main “std::_1::ctype::id”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::_1::locale::~locale()”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::_u1::ios_base::_set_badbit_和_consupt_rethrow()”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::_1::ios_base::clear(unsigned int)”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “std::terminate()”,引用自: ___叮当声呼叫终止于HelloWorld-97feed.o “\uuuuuuuucxa\u begin\u catch”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) ___叮当声呼叫终止于HelloWorld-97feed.o “\uuuuuuuucxa\u end\u catch”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) “\uuuuuuugxx\u个性\u v0”,引用自: HelloWorld-97feed.o中的std::uuu 1::basic_ostream和std:uuu 1::uu put_character_序列(std:uuu 1::basic_ostream&,char const*,unsigned long) HelloWorld-97feed.o中的std::::uu 1::ostreambuf_迭代器std::uu 1::u pad_和u输出(std::uu 1::ostreambuf_迭代器,char const*,char const*,std:u 1::ios_base&,char) HelloWorld-97feed.o中的侏儒异常展开信息(_eh_frame) ld:找不到架构x86_64的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
gcc
clang
cc
(在您的系统上似乎是
clang
的符号链接)是用于构建C程序的命令

<代码> G+++ <代码>和<代码> CLAN++/CONT>是C++程序的命令。

C和C++是两种不同的语言。 尽管所有这些命令通常都是后台更大的编译器的“前门”,能够构建各种各样的东西,但有一些默认值取决于您输入的实际命令。例如,执行<代码> GCC < /C> >或<>代码> cc>代码>不会自动将C++标准库添加到链接到程序中的库。

读取文档,然后使用正确的命令在工具链中构建C++程序。对于Clang,这就是

Clang++
(正如您所发现的)。对于GCC,这就是
g++

  • 另见:

在以前版本的Xcode中,苹果曾经同时提供libstdc++和libc++。为了防止名称冲突,libc++的维护者将std::namespace别名为std::\uu 1

发生的事情是,g++(默认使用libstdc++)正在链接使用clang编译的库(默认使用libc++)

事实上,stdlibc++仍然附带Xcode,但据我所知,它已经过时了

困惑

我也是


除非您确切知道自己在做什么,否则最好在mac上使用clang++编译所有内容。事实上,更高版本的Xcode将g++视为clang++的同义词。

你的标题是“gcc或cc”,而你的身体则是“gcc或g++”。是哪一个?你到底在干什么?因为在我看来,你试图用C编译器来构建C++程序(例如,代码> cc),因此缺少标准库实现。MyType GCC在TITLE OK中,但它也在你的例子中说“CC”。请注意你的帖子…注意你可以编译几乎所有的
C++
文件