应向 gcc 提供什么编译器参数才能让它认为它是 g++?

发布于 2024-11-03 19:12:43 字数 35 浏览 1 评论 0原文

是否可以为 gcc 编写一个参数,使其认为它是 G++?

Is it possible to write an argument to gcc such that it would think its G++?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苍景流年 2024-11-10 19:12:43

你为什么要这样做?据我所知,唯一的区别是 g++ 另外将 -lstdc++ 传递给链接器,以链接 C++ 标准库。

因此,如果您将该选项传递给 GCC,它应该将其转发给链接器,并且一切都应该没问题。但我真的看不出这样做的理由。只需使用g++

也就是说,我过去自己使用 gcc 来编译 C++ 代码。当我有一堆文件,混合 C++ 和 C 代码时,我只是使用 gcc 编译所有内容,因为 g++ 默认情况下将 .c 视为是 C++ 代码,当 C 代码使用诸如 new 作为标识符时,它会破坏构建。添加 -lstdc++ 总是效果很好。

请参阅 GCC 联机帮助页

编译C++程序

C++ 源文件通常使用后缀 .C、.cc、.cpp、.CPP、.c++、.cp 或 .cxx 之一; C++ 头文件经常使用 .hh、.hpp、.H、
或(对于共享模板代码).tcc;预处理的 C++ 文件使用后缀 .ii。 GCC 识别具有这些名称的文件并编译它们
即使您以与编译 C 程序相同的方式调用编译器(通常使用名称 gcc),也可以将其视为 C++ 程序。

但是,使用gcc并不会添加C++库。 g++是一个调用GCC并将.c、.h和.i文件视为C++源文件的程序
而不是 C 源文件,除非使用 -x,并且自动指定针对 C++ 库的链接。该程序在以下情况下也很有用:
预编译带有 .h 扩展名的 C 头文件,以便在 C++ 编译中使用。在许多系统上,g++ 也以 c++ 名称安装。

编译 C++ 程序时,您可以指定许多与编译任何语言的程序相同的命令行选项;
或对 C 和相关语言有意义的命令行选项;或仅对 C++ 程序有意义的选项。

Why would you want to do this? As far as I know, the only difference is that g++ in addition passes -lstdc++ to the linker, to link the C++ Standard library.

So if you pass that option to GCC, it should forward it to the linker, and all should be fine. But I really don't see a reason in doing this. Just use g++.

That said, I used gcc myself in the past, to compile C++ code. When I had a bunch of files, mixed C++ and C code, I just compiled everything using gcc, because g++ by default treats .c as being C++ code, which breaks the build when the C code uses such things as new as identifiers. Adding -lstdc++ always worked nicely.

See the GCC manpage

Compiling C++ Programs

C++ source files conventionally use one of the suffixes .C, .cc, .cpp, .CPP, .c++, .cp, or .cxx; C++ header files often use .hh, .hpp, .H,
or (for shared template code) .tcc; and preprocessed C++ files use the suffix .ii. GCC recognizes files with these names and compiles them
as C++ programs even if you call the compiler the same way as for compiling C programs (usually with the name gcc).

However, the use of gcc does not add the C++ library. g++ is a program that calls GCC and treats .c, .h and .i files as C++ source files
instead of C source files unless -x is used, and automatically specifies linking against the C++ library. This program is also useful when
precompiling a C header file with a .h extension for use in C++ compilations. On many systems, g++ is also installed with the name c++.

When you compile C++ programs, you may specify many of the same command-line options that you use for compiling programs in any language;
or command-line options meaningful for C and related languages; or options that are meaningful only for C++ programs.

鹿童谣 2024-11-10 19:12:43

这个文档指出有一个标志-x来指定语言:

gcc -x c++ ...

This documentation states there is a flag -x to specify the language:

gcc -x c++ ...
莫言歌 2024-11-10 19:12:43

“gcc”是“Gnu 编译器集合”。如果您向它传递一个 C++ 文件,它会调用 C++ 编译器“g++”。

尽管如此,对于 c++ 文件,“gcc”和“g++”不可互换。 gcc 运行 g++ 时带有一些我一时记不起的附加参数。

当你编译c++文件时,我总是使用g++

'gcc' is 'Gnu Compiler Collection'. If you pass it a C++ file, it invokes the C++ compiler, 'g++'.

Despite this, 'gcc' and 'g++' not interchangeable for c++ files. gcc runs g++ with a few additional arguments that I can't remember off the top of my head.

When you compile c++ files, I would always use g++

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文