是 g++都是 c++编译器和链接器?

发布于 2024-11-03 02:29:17 字数 469 浏览 2 评论 0原文

我正在查看 Eclipse 中构建的输出。我正在针对 ColdFire 处理器进行交叉编译。编译行如下所示:

m68k-elf-g++ -O2 -falign-functions=4 -IC:\nburn\include -IC:\nburn\MOD52...

后面是更多包含文件、明显的“编译器”标志,最后是我更改的一个源文件。下一行再次调用相同的工具:

m68k-elf-g++ src\main.o src\TouchPanelMediator.o src\Startup.o....

后面是更多 .o 文件、一些 .ld 文件和一些 .a 文件。这似乎将所有不同类型的目标文件链接在一起。

在Gnu家族中,g++是一些超级应用程序,可以根据参数确定是否需要编译或链接?它是否内置了这两种功能,或者只是将编译分派到 gcc 并链接到 ld 而我的日志没有显示这一点?

I was looking at the output from my build in Eclipse. I'm cross compiling for a ColdFire processor. The compilation line looks like this:

m68k-elf-g++ -O2 -falign-functions=4 -IC:\nburn\include -IC:\nburn\MOD52...

followed by more include file, obvious "compiler" flags and finally the one source file I changed. The next line invokes the same tool again:

m68k-elf-g++ src\main.o src\TouchPanelMediator.o src\Startup.o....

followed by more .o files some .ld files and some .a files. This appears to be linking all the various types of object files together.

In the Gnu family is g++ some uber application that can determine based on arguments whether it needs to compile or link? Does it have both capabilities built-in or is it just dispatching compiling to gcc and linking to ld and my log just doesn't show that?

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

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

发布评论

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

评论(3

彩扇题诗 2024-11-10 02:29:17

g++gcc驱动程序。通常,它们运行预处理器 (cpp)、编译器(对于 C++ 为 cc1plus,对于 C 为 cc1)和链接器(gold 或 GNU ld) )以及所有其他必要的东西。 gccg++ 之间的区别在于后者包含一个额外的链接库 (libstdc++)。

根据调用它们的文件类型,它们可能会省略一些步骤或以不同的方式执行操作。例如,对于 .o 文件,它不需要运行适当的编译器或预处理器。

如果将 -### 传递给它们,您可以看到它打印在执行的每个步骤中调用的工具。

g++ and gcc are drivers. Usually, they run the preprocessor (cpp), compiler proper (cc1plus for C++ and cc1 for C) and the linker (gold or GNU ld) and all other things necessary. The difference between gcc and g++ is that the latter includes one additional library to link against (libstdc++).

Depending on what type of file they are invoked on, they may omit some steps or do things differently. For .o files, it doesn't need to run the compiler proper or the preprocessor, for example.

If you pass -### to them, you can see it print the tools it invokes in each step of its execution.

梦里人 2024-11-10 02:29:17

摘自这份小小的 GCC 指南

根据您为程序提供的文件扩展名,它会选择需要运行的适当命令,以将您提供的源代码转换为您指定的输出文件。

根据文件扩展名,有一个很好的小流程图说明了 GCC 的具体功能:

input extensions      runs     if   output  

GCC run flow

Taken from this little GCC guide:

Based on the file extension that you gave your program, it selects the appropriate commands it needs to run to turn the source you gave it into the output file you specified.

With a nice little flowchart of what GCC exactly does, depending on the file extensions:

input extensions      runs     if   output  

GCC run flow

愛上了 2024-11-10 02:29:17

它发送到 ld 的链接。

另请参阅此处:
如何获取 GCC 链接器命令?

It dispatches linking to ld.

Also see here:
How to get GCC linker command?

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