:
#include <stdio.h>
int main( int argc, char ** argv )
{
printf("hello\n");
exit(56);
}
:
~$ gcc test.c -o test
test.c: In function โmainโ:
test.c:6:5: warning: implicit declaration of function โexitโ [-Wimplicit-function-declaration]
exit(56);
^
test.c:6:5: warning: incompatible implicit declaration of built-in function โexitโ
test.c:6:5: note: include โ<stdlib.h>โ or provide a declaration of โexitโ
, , , :
~$ ./test
hello
~$ echo $?
56
@Mat , , :
, .
C - . . , C ( , -nostdlib ) ( loader vdso).
~$ ldd test
linux-vdso.so.1 (0x00007fff1b128000)
libc.so.6 => /lib64/libc.so.6 (0x00007f804389f000)
/lib64/ld-linux-x86-64.so.2 (0x0000557744537000)
. exit libc.so.6 . . -v --verbose :
gcc test.c -o test --verbose
, , :
/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include
/usr/local/include
/usr/include
, , stdlib, , . , , . printf stdio.h, exit.
:
/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/collect2 ... -lc ...
collect2 gcc, lc, C. , : . .
, gcc -M, . , , , stdio.h, stdlib.h:
$ gcc -M test.c
test.o: test.c /usr/include/stdc-predef.h /usr/include/stdio.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
, -E gcc:
$ gcc -E test.c
- . , , .