Function GCC中内置函数的含义是什么?

Function GCC中内置函数的含义是什么?,function,gcc,built-in,Function,Gcc,Built In,当使用gcc时,我们可以编写一个标准c程序而不包含任何库,gcc如何使用没有库的函数,换句话说,函数的原型和主体在哪里?链接器有一些默认选项,除非明确更改,正在链接到一些核心C内容。默认情况下包含libc,它包含所有标准输入和输出函数,例如stdio/stdlib GCC是用许多标准选项构建的。您可以在对文件调用gcc-v时观察它们,也可以使用gcc-v-Wl,-verbose显式增加链接器的详细程度 注意,您可以通过-NoSTDLIB,-NOSTDIN选项将GCC删除默认C包含和-NoSTDI

当使用gcc时,我们可以编写一个标准c程序而不包含任何库,gcc如何使用没有库的函数,换句话说,函数的原型和主体在哪里?

链接器有一些默认选项,除非明确更改,正在链接到一些核心C内容。

默认情况下包含libc,它包含所有标准输入和输出函数,例如stdio/stdlib

GCC是用许多标准选项构建的。您可以在对文件调用gcc-v时观察它们,也可以使用gcc-v-Wl,-verbose显式增加链接器的详细程度

注意,您可以通过-NoSTDLIB,-NOSTDIN选项将GCC删除默认C包含和-NoSTDIMC++,以移除默认C++。 例如,当我使用-v调用时,我可以在cygwin上看到以下代码段

COLLECT\u GCC\u OPTIONS='-v'-shared libgcc'-mtune=generic' “-march=x86-64” /usr/libexec/gcc/x86@64-pc-cygwin/4.8.2/collect2.exe-m i386pep-wrap@Znwm-wrap@ZdlPv-wrap@ZdaPv-wrap@ZnwmRKSt9nothrow@t-wrap@zdlpkst9; wrap@动态dll@搜索前缀=cyg-tware/usr/lib/x9nothrow@t@t@wrap@t@t@wrap@@@@zdl312; /usr/lib/gcc/x86_64-pc-cygwin/4.8.2/crtbegin.o -L/usr/lib/gcc/x86_64-pc-cygwin/4.8.2-L/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../../../../../../x86_64-pc-cygwin/lib/../lib -L/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../../../../../lib-L/usr/lib/../lib-L/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../../../x86_64-pc-cygwin/lib-L/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../..//tmp/ccIyoOMf.o-lstdc++-lgcc_-lgcc-lcygwin-ladvapi32-lshell32-luser32-lkernel32-lgcc_-lgcc/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/crtend.o


COLLECT_GCC_OPTIONS变量将被传递给GCC正在驱动的所有子进程,但在本例中,您可以看到它在默认情况下会与-lstdc++-lgcc_s-lgcc-lcygwin-ladvapi32-lshell32-luser32-lkernel32-lgcc_-lgcc库链接。

这个核心的C东西在哪里?在gcc.exe中?它是带一个破折号的-nostdinc,我认为-nostdlib在这里更相关。当然,谢谢您的注意。我写这封信的时候非常冗长,所以双破折号仍然留在我的脑海里。