首页 > 解决方案 > 操作系统和编译器如何通信以启动程序编译

问题描述

当我给出编译.cpp代码的命令时

g++ abc.cpp

我是否调用系统调用来首先启动gcc编译器并将文件提供给它(abc.cpp)进行编译。

否则如何调用编译器的 void _start() 函数,该函数用于调用main()函数。

是否像 os 的 system() 被调用,它会调用void _start()

标签: c++cunixcompilationoperating-system

解决方案


g++只是somewhere/bin/g++一个可执行文件的别名。该可执行文件作为参数传递abc.cpp,然后关闭并执行编译器编译文件的操作。它可能使用其他可执行文件在后台编译和链接文件。

操作系统唯一要做的就是加载g++到内存中并main通过crt调用它。


推荐阅读