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

时间:2014-01-10 10:02:12

标签: function gcc built-in

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

3 个答案:

答案 0 :(得分:2)

GCC内置了许多标准选项。您可以在文件上调用gcc -v时观察它们,也可以使用gcc -v <file> -Wl, --verbose显式增加链接器的详细程度。

请注意,您可以将-nostdlib-nostdinc选项传递给gcc以删除默认的C包含,并-nostdinc++删除默认的C ++包含。

例如,当我使用-v调用时,我可以在cygwin上看到以下代码段,

  

COLLECT_GCC_OPTIONS =' - v''-shared-libgcc''-minune = generic'   '-march = X86-64'        /usr/libexec/gcc/x86_64-pc-cygwin/4.8.2/collect2.exe -m i386pep --wrap _Znwm --wrap _Znam --wrap _ZdlPv --wrap _ZdaPv --wrap _ZnwmRKSt9nothrow_t --wrap _ZnamRKSt9nothrow_t --wrap _ZdlPvRKSt9nothrow_t --wrap _ZdaPvRKSt9nothrow_t -Bdynamic --dll-search-prefix = cyg --tsaware /usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../lib/ crt0.o中   /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 ​​/ lib /../ 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_s -lgcc -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32 -lgcc_s -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_s -lgcc库。

答案 1 :(得分:0)

默认情况下包含

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

答案 2 :(得分:-1)

链接器有一些默认选项,除非明确更改,否则链接到某些核心C的东西。