gpt4 book ai didi

c++ - 为什么cc可以编译c++程序?

转载 作者:行者123 更新时间:2023-11-30 04:43:05 27 4
gpt4 key购买 nike

我有一个适用于 macOS 和 Linux 的 makefile,其中包含以下命令:

cc -std=c++14 foo.cpp bar.cpp

它编译得很好。 foo.cppbar.cpp顾名思义,它们是 C++ 文件,它包含 C++11 语法。编译工作正常。

现在如果我包括 <fstream>我收到数百个链接器错误。我想知道,这是为什么?

Undefined symbols for architecture x86_64:
"std::__1::locale::has_facet(std::__1::locale::id&) const", referenced from:
bool std::__1::has_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in DiceInvaders-6f5dd4.o
"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
...

阿法克,cc链接到 c 编译器,我认为由于它是自动检测,它会使用 C++ 编译器进行编译。但为什么它会因额外的 C++ 包含而失败?

有没有cc的对应物?对于 c++在系统上?如果我使用 g++ ,我会假设该命令可用,如果用户真的想用他偏好的编译器(如 cc)编译它怎么办?

编辑:是$(CXX)一个很好的替代 cc

最佳答案

您系统上的 cc 很可能是 gcc 可执行文件的符号链接(symbolic link)。假设这是真的:

gccg++的区别,引用man page , 是:

g++ is a program that calls GCC and automatically specifies linking against the C++ library.

因此,当您调用 gcc 时,它不会链接到 c++ 库。您可以手动链接标准 C++ 库:

gcc -lstdc++ 1.cpp

Is there any counterpart of cc for c++ on a system?

cc 命令只是大多数系统遵循的约定。它不是标准化的,至少我还没有听说实用程序 c99posix 标准化了。 .在我的带有 gcc 包的 archlinux 发行版的 linux 系统上,还安装了 /usr/bin/c++g++ 的符号链接(symbolic link)。

关于c++ - 为什么cc可以编译c++程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58474957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com