����� �� ��������� GNU CC, �� ������ ��������� ������������������, ����������, ��������������� � ��������. "����� �����" ��������� ��� ���������� ���� ������� �� ������������� ������. ��������, ����� '-c' ������� �� ��������� ������. ����� ����� ������� �� ��������� ������, ����������� �����������.
������ ����� ���������� �� ���� �� ������ ���������. ���� ����� ��������� ��������������, ������ ����� ������������. ��� ��� ������� �����, ����������� ����������� � ��������; ����������� �� ��� �� ��������������� �����, ��������� ��� ����� ��������� ������������ �����-������ �� ���.
������� ����� ����� ��������� ������, ������� �� ������ ������������ � GNU CC ������� ��� C ��������; ���� ����� ������� ������ ��� ������ ������ (������ C++), � ����������� ������� �� ���� �����. ���� � �������� �����-���� ����� �� ����������� �������� ����, �� ������ ������������ ��� ����� �� ����� ��������������� �������.
��. ������ [���������� C++ ��������], ����� ����� ������ ����� ��� ���������� C++ ��������.
��������� gcc ��������� ����� � ����� ������ ��� ��������. ������ ����� ����� �������������� �����; �������������, �������������� ������������� ����� �� ����� ���� ��������������: '-dr' ����� ���������� �� '-d -r'.
�� ������ ��������� ����� � ������ ���������. �� ������� �����, ������������ ������� �� ����� ��������. ������� �����, ����� �� ����������� ��������� ����� ������ ����; ��������, ���� �� ���������� '-L' ������ ��� ���� ���, ���������� ��������������� � ������� ��������.
������ ����� ����� ������� �����, ������������ � '-f' ��� � '-W' - ��������, '-fforce-mem', '-fstrength-reduce', '-Wformat' � ��� �����. ����������� �� ��� ����� ������������� � ������������� �����; ������������� ������ '-ffoo' ����� '-fno-foo'. ��� ����������� ������������� ������ ���� �� ���� ���� - ��, ������� �� ����������� �� ���������.
����� �������� ������ ���� �����, ��������������� �� ����. ��������� ����������� � ��������� ��������.
��. ������ [�����, ����������� ����� ������].
-c -S -E -o FILE -pipe -v -����
��. ������ [�����, ����������� ��������� C].
-ansi -fallow-single-precision -fcond-mismatch -fno-asm
-fno-builtin -fsigned-bitfields -fsigned-char
-funsigned-bitfields -funsigned-char -fwritable-strings
-traditional -traditional-cpp -trigraphs
��. ������ [����� ��� ��������� ��� ���������� ��������������].
-fsyntax-only -pedantic -pedantic-errors
-w -W -Wall -Waggregate-return -Wbad-function-cast
-Wcast-align -Wcast-qual -Wchar-subscript -Wcomment
-Wconversion -Wenum-clash -Werror -Wformat
-Wid-clash-LEN -Wimplicit -Wimport -Winline
-Wlarger-than-LEN -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs
-Wno-import -Woverloaded-virtual -Wparentheses
-Wpointer-arith -Wredundant-decls -Wreorder -Wreturn-type -Wshadow
-Wstrict-prototypes -Wswitch -Wsynth -Wtemplate-debugging
-Wtraditional -Wtrigraphs -Wuninitialized -Wunused
-Wwrite-strings
��. ������ [����� ��� ������� ����� ��������� ��� GNU CC].
-a -d����� -fpretend-float
-g -g������� -gcoff -gdwarf -gdwarf+
-ggdb -gstabs -gstabs+ -gxcoff -gxcoff+
-p -pg -print-file-name=���������� -print-libgcc-file-name
-print-prog-name=��������� -print-search-dirs -save-temps
��. ������ [�����, ������� ��������� ������������].
-fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
-fdelayed-branch -fexpensive-optimizations
-ffast-math -ffloat-store -fforce-addr -fforce-mem
-finline-functions -fkeep-inline-functions
-fno-default-inline -fno-defer-pop -fno-function-cse
-fno-inline -fno-peephole -fomit-frame-pointer
-frerun-cse-after-loop -fschedule-insns
-fschedule-insns2 -fstrength-reduce -fthread-jumps
-funroll-all-loops -funroll-loops
-O -O0 -O1 -O2 -O3
��. ������ [�����, ����������� ��������������].
-A������(�����) -C -dD -dM -dN
-D������[=��������] -E -H
-idirafter ����������
-include ���� -imacros ����
-iprefix ���� -iwithprefix ����������
-iwithprefixbefore ���������� -isystem ����������
-M -MD -MM -MMD -MG -nostdinc -P -trigraphs
-undef -U������ -Wp,�����
��. ������ [�������� ����� ����������].
-Wa,�����
��. ������ [����� ��������].
���-����������-����� -l����������
-nostartfiles -nodefaultlibs -nostdlib
-s -static -shared -symbolic
-Wl,����� -Xlinker �����
-u ������
��. ������ [����� ��� ������ � �����������].
-B������� -I���������� -I- -L����������
��. ������ [�������� ������� ������ � ������ �����������].
-b ������ -V ������
��. ������ [������ � ������������ �����].
����� i386
-m486 -m386 -mieee-fp -mno-fancy-math-387
-mno-fp-ret-in-387 -msoft-float -msvr3-shlib
-mno-wide-multiply -mrtd -malign-double
-mreg-alloc=������ -mregparm=�����
-malign-jumps=����� -malign-loops=�����
-malign-functions=�����
��. ������ [����� ���������� � ��������� ����].
-fcall-saved-������� -fcall-used-�������
-ffixed-������� -finhibit-size-directive
-fno-common -fno-ident -fno-gnu-linker
-fpcc-struct-return -fpic -fPIC
-freg-struct-return -fshared-data -fshort-enums
-fshort-double -fvolatile -fvolatile-global
-fverbose-asm -fpack-struct +e0 +e1
���������� ����� �������� �� ������� ������: ������������������, ���������� ����������, ��������������� � ��������, ������ � ���� �������. ������ ��� ������ ����������� � ���������� ��������� ����� � ������������� ���������� ���������� �����; �������� ���������� ��� ��������� ����� (������ ����������������� ��� ���������� ��� �������) � ����������� ����.
��� ������ ����� �������� ����� ������� ���������� ����� ���������� ���������:
file.c �������� ��� �� C, ������� ��������� � ������������������.
file.i �������� ��� �� �, ������� �� ��������� � ������������������.
file.ii �������� ��� �� C++, ������� �� ��������� � ������������������.
file.m �������� ��� �� Objective C. �������, ��� ��� ����������
���������� ���������� 'libobjc.a', ����� ���������
Objective C ��������� ��������.
file.h C ������������ ���� (�� ��� ���������� ��� ��������).
file.cc
file.cxx
file.cpp
file.C �������� ��� �� C+, ������� ��������� � ������������������.
file.s ������������ ���.
file.S ������������ ���, ������� ��������� � ������������������.
������ ��������� ����, ������� ����� ������ ����� �� ��������. ���
��������� � ����� ������ ����� � �������������� ���������.
�� ������ ����� ������� ������� ���� ��� ������ ����� '-x':
����� ������������� ���� ����������� ������� ������ (���� ���� ���������� ����� ������� ���� �� ��������� �������� ����� �����). ��� ����� ��������� �� ��� ������� ����� ������ �� ���������� ��������� ����� '-x'. ���������� ���������� ��� ����� ��������:
c objective-c c++
c-header cpp-output c++-cpp-output
assembler assembler-with-cpp
��������� ����� �������� ����� ���, ��� ����������� ����� �������������� � ������������ � ���������� ���� ������ (��� ���� �� '-x' �� ����������� �� �����).
���� ��� ����� ���� ��������� �� ������ ����������, �� ������ ������������ '-x', ����� ������� gcc ��� ������, � ���� �� ����� '-c', '-S' ��� '-E', ����� �������, ��� gcc ������ ������������. �������, ��� ��������� ���������� (��������, '-x cpp-output -E' ��������� gcc �� ������ ������ ������).
������������� ��� �������������� �������� �����, �� �� ���������. ������ ������� ������ �� �����������. �������� ����� ���������� � ����� ���������� ����� ��� ������� ��������� �����.
�� ���������, ��� ���������� ����� �������� �� ����� ��������� ����� ������� �������� '.c', '.i', '.s', �.�.�. �� '.o'.
�������������� ������� �����, �� ��������� ���������� ��� ���������������, ������������.
������������ ����� ���������� ����������; �� ��������������. ����� ������������ � ����� ����� � ������������ ����� ��� ������� �� ������������� �������� �����.
�� ���������, ��� ����� � ������������ ����� �������� �� ����� ��������� ����� ������� �������� '.c', '.i', �.�.�. �� '.s'.
������� �����, ������� �� ������� ���������� ������������.
������������ ����� ������ ������������������; �� ��������� ���������� ����������. ����� �������� � ����� �������������������� ��������� ����, ������� ���������� �� ����������� �����.
������� �����, ������� �� ������� ������������������ ������������.
��������� ����� � ���� '����'. ��� ����� ����������� ��� ����������� �� ���� ������������ �����, ���� �� ��� ���������� ����, ��������� ����, ������������ ���� ��� ������������������� C ���.
��������� ����������� ������ ���� �������� ����, ��� ������ ������������ '-o' ��� ���������� ����� ��� ������ �������� �����, ���� �� �� ���������� �� ������ ���������� ����.
���� '-o' �� �������, �� ��������� ���������� ���� ���������� � 'a.out', ��������� ���� ��� '��������.�������' - � '��������.o', ��� ������������ ��� � '��������.s' � ��� ������������������� C ����� - � ����������� �����.
�������� (� ����������� ����� ������) ������� ����������� ��� ������� ������ ����������. ����� �������� ����� ������ ����������� ��������� �����������, ������������� � ������ �����������.
������������ ������ ������ ��������� ������ ��� ������������ ����� ���������� �������� ����������. ��� ����� �� �������� �� ��������� ��������, ��� ��������� �� ����� ������ �� ������, �� ��������� GNU �� ����� �������.
��������� ����� ��������� ���������� C (��� ��� ������ ����������� �� C, ����� ��� C++ � Objective C), ������� ������������ ����������:
������������ ��� ANSI C ���������.
��� ����� ��������� ��������� �������� GNU CC, ������� ������������ � ANSI C �����, ��� �������� ����� asm, inline � typeof, ���������������� ������� �����, ��� unix � vax, ������� �������������� ��� ������������ ���� �������. ��� ����� �������� ������������� � ����� ������������ ANSI �������������� ������������������, �� ��������� '$' � ��������������� � ����������� � ����� C++ '//'.
�������������� �������� ����� __asm__, __extension__, __inline__ � __typeof__ ���������� �������� �� ������ �� '-ansi'. ��, ����������, �� ������ �� ������������ �� � ANSI C ���������, �� ������� ������������ �� � ������������ ������, ������� ����� ���� �������� � ���������� � '-ansi'.
����� '-ansi' �� ��������� ���, ��� �� ANSI C ��������� ����������� �������������. ����� ��� ���� ���, � ���������� � '-ansi' ��������� ����� '-pedantic'. ��. ������ [����� ��������������], ���. 35.
����� ������������ ����� '-ansi', ������������� ������ __STRICT_ANSI__. ��������� ������������ ����� ����� �������� ���� ������ � �������������� �� ���������� ������������ ������� ��� ����������� ������������ ��������, � ������� ANSI �������� �� ����������; ��� ��������, ����� �������� ����� ����������, ������� ����� ������������ ��� ����� ��� ������ �����.
������� alloca, abort, exit � _exit �� �������� ����������� ��������� ��� ������������� '-ansi'.
�� ������������ ��� �������� ����� asm, inline � typeof, � ��� ����� ���� ������������ � ���� � �������� ���������������. �� ������ ������������ ������ ��� �������� ����� __asm__, __inline__ � __typeof__. '-ansi' �������� '-fno-asm'.
�� ������������ ���������� ������� ����� ���, ����� ������� ���������� � ���� �������������. �� ������ ������ �������������� ��������� �������� abort, abs, alloca, cos, exit, fabs, ffs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy � strlen.
GCC ������ ���������� ����������� ���, ����� ����� ���������� ������������ ��������� ���������� �������; ��������, ����� alloca ����� ����� ������ ������������������� ����������, ������� ����� ����������� ����, � ����� memcpy ����� ������������ ������ � ���� �����������. �������������� ��� �������� � ����� ��������, � ����� �������, �� ��������� ������ ������� ��� �������� ������ �� ����������, �� �� ������ �� ��������� �� ���� ����� ��������, �� �������� ��������� ������� ����������� ������ ����������.
����� '-ansi' �� ���� �������� alloca � ffs ���� �����������, ��������� ��� ������� �� ����� ����������������� �������� � ��������� ANSI C.
�������������� �������������� ������������������ ANSI C. ����� '-ansi' �������� '-trigraphs'. �� ��������� ���� ������ ���� ��������������.
�������� ���������� ��������� �������� ������������ ������������ C. � ������:
�� �� ������ ������������ '-traditional', ���� �� ��������� ����� ���� ������������ �����, ������� ���������� �� ����������� ANSI C. ��������� �������� ���������� ������� � ANSI C ������������� ������� � �� �� ������ ������������ '-traditional' �� ����� ������� ��� ���������� ������, ������� �������� ��������� ������������ �����.
� ������������� ���������� ������������� � �����, � �� � ������. ��� ��������� ������������ ����������� ������.
� ��������� ������������� ������ '#' ������ ���� ������ � ������.
� ������������� ��������� ������� ������������ � ��������� ���������� � ����������� ������� (�� �������� ������������ � ������, �� ��� �������������� �������, ����� ��� ���������� � ��������������� ���������).
���������������� ������ __STDC__ �� ���������, ���� �� ����������� '-traditional', �� __GNUC__ ��������� (��������� ���������� GNU, � ������� ������� __GNUC__ �� ������������� ������ '-traditional'). ���� ��� ����� �������� ������������ ����, ������� �������� ��-������� � ����������� �� ����, ������������ �� ����� '-traditional', �������� ��� ��� ������� �� ������ ��������� ������ ��������: GNU C, ������������ GNU C, ������ ANSI C ����������� � ������ ����������� ������� C. ���������������� ������ __STDC_VERSION__ ����� �� ���������, ����� �� ����������� '-traditional'. ��. ������ "����������� ���������������� �������" � '������������� C' �� ������ ���� � ������ ���������������� ��������.
������������ �������, ��� ��������� ��������� ������ ������������� ��� �������� �� ����� ������ (���� ������ ��� �� ������������ '\'). (��� '-traditional' � ��������� ���������� ����� ���� ������ ����� ������ ���, ��� �������.)
�������� ���������� ��������� ����������� ������������ �������������� C. ��� �������� � ���� ���� ������� � ������� ��������������� ����, �� ��� ������ �������� '-traditional'.)
����������� �������� ��������� � �� ������������� ������ ������� � �������� ����������. �������� ������ ��������� ���� void.
��� char ��������� �����������, ��� unsigned char.
������ ������ ����� ��������� - ����� ������ ���� char, �����, ��� unsigned char ��� �����, ��� signed char.
� ������, ����������� ��������� ������ ������ ������������ unsigned char ��� signed char, ����� ��� ������� �� ���������� �������. �� ������ ��������� ���� �������� � �������������� �������� char, � �������������, ��� �� ����� ���� ��������, ���� �����������, � ����������� �� ������, ��� ������� ��� ���� ��������. ��� ����� � �� ��������������� ��������� ��� ��������� ����� ��������� �������� ��� ��������������� ���������.
��� char ������ ������� � �� signed char, � �� unsigned char, ���� ��� ��������� ������ ����� ��, ��� � ������ �� ���� ���� �����.
��� char ��������� ��������, ��� signed char.
�������, ��� ��� ����� ������������ '-fno-unsigned-char', ������� �������� ������������� ������ '-funsigned-char'. ����������, ����� '-fno-signed-char' ������������ '-funsigned-char'.
��� ����� ��������� ����������� ���� �����, � ��� ������, ���� ��� ���������� �� ���������� signed ��� unsigned. �� ��������� ����� ���� ��������� ���������, ������ ��� ��� ���������������: ������� ����� ���� �����, ��� int �������� ���������.
������, ���� ������������ ����� '-traditional', ������� ���� ��� ����������� - �� ����� �����.
��������� ��������� ����������� � ��������, ��������� ��� ������ � �� ���������. ��� ����� ��� ������������� �� ������� �����������, ������� ������������, ��� ����� ������ � ��������� ���������. ����� '-traditional' ����� ����� ����� ������.
������ � ��������� ��������� ��� ����� ������ ���� - "���������" ������ ���� �����������.
����� � ��������� ������ ��������� �������� �� ����������� �� ������� ��� �������������� ���������, ���� ��� ���������� � ������ '-traditional'. ������������ C ��������� � ������ ��������� ��� �������� � ��������� ������ �� ������� ��������, ��� ����������� �� �������� ���������. �� �����������, ��� ������� �� ������������ ��������� �������� ����� ��������� ������� �������. ���� �� ������ ������������ '-traditional', �� ������ ������������ �������� ��������� ��������, ����� �������� ��������� ��������, ����������� ��� �����. ��� ����� �� ����� ������� ��� ���������� � ANSI ��� GNU C ������������.
�������������� - ��� ��������������� ���������, ������� �������� � ������������ �� ���������� �������� ����������, �� ����������� ���, ��������, ����������� ������.
�� ������ �������� ������ ������ ������������� �������������� � ������� �����, ������������ � '-W', ��������, '-Wimplicit', ����� �������� �������������� �� ������� �����������. ������ �� ����� ����� ����� ������������� �����, ������� ���������� � '-Wno-', � ������ ��� ���������� ������ ��������������; ��������, 'Wno-implicit'. � ���� ����������� ������� ������ ���� ����� ������ ����� - ��, ������� �� �������� ����������.
��������� ����� ��������� ����������� � ����� ��������������, ���������� GNU CC.
����������� ��� �� ������� �������������� ������, �� ����� ����� �� �������� ������.
�������� ��� ��������������, ��������� ������� ANSI ���������� C, ������������� ��� ���������, ������� ���������� ����������� ����������.
���������� ANSI C ��������� ��������� ������������� ��� �, ��� � ��� ���� ����� (���� ����� ������ � ������� ����� '-ansi'). ������, ��� ���� ����� �������������� ����� ��������� GNU ���������� � �������� ������������� C. � ���� ������ ��� �����������.
'-pedantic' �� �������� �������������� ��� ������������� �������������� �������� ����, ������������ � ��������������� � '__'. �������������� ����� �� ���������� ����� ���������, ����� �������� ����� '__extension__'. ������, ���� �������������� ������ ������� ������������ ������ � ��������� ������������ ������; ������� �������� ��� � ���������� ����������. ��. ������ 6.34 [�������������� �������� �����].
��� ����� �� ���������� �� ���������� - ��� ���������� ������ ����� ������������� ��������, ������� � ��������� ������ ����� ����������, ��� GNU CC �� ����� ������������ �������� ANSI C.
��������� ������������ �������� ������������ '-pedantic', ����� ��������� ��������� �� ������������ �� ������� ���������� ANSI C. ��� ����� ������������, ��� ��� ������ �� ����� ��, ��� ��� �����: ��� �������� ��������� �� ANSI C �����������, �� �� ���, � ������ ��, ��� ������� ANSI C ������� �����������.
����������� ������� ��� �������������� � ANSI C ����� �� ���� ������� �� ������ �������, �� ����������� �� ������� ������ �������������� ������ ���������� �������� �� ����� ����� '-pedantic'. �� ������ ����������� ������������ ��������������� �������������� ���������� GNU C � ������������ ����������� ������ ������������. ����� ��������� ���������������� � ������ ��������� �����, ���� ������ ���� ������ ������������ ����� ���� ������ ������������ C ������ ��������������� ����������� GNU CC.
������� ����� '-pedantic', � ��� ��������, ��� ������ �������������� ����������� ������.
���������� ��� ��������������.
���������� �������������� �� ������������� '#import'.
�������������, ���� ������ ������� ����� ��� char. ��� ������ ������� ������, ��� ��� ������������ ����� ��������, ��� ���� ��� ����� ���� �������� �� ��������� �������.
������������� ��� ������ ��������� ������ ����������� '/*' � �����������.
��������� ������ � printf, scanf � �. �., ����� ��������� ���� ������������ ���������� �� ������������ �� ����������������� ������� �������.
�������������, ����� ������� ��� �������� ����������� ������.
������������� �� ���������� ������ � ��������� ����������, ����� ��� ������������ ���, ��� ����� �������� ��� ��������� ��������, � ����������� ������� ���� ����� ��������.
�������������, ���� ������� ��������� � ����� ������������� �������� �� ��������� - int. ����� ������������� �� ���������� �������� ��� ������������� �������� � ��������, ��� ������������ ��� �� ���� void.
�������������, ����� �������� switch ����� � �������� ������������� ��� ������������, � ��� ������ ��� ���������� ����������� ����� ����������� case. (����������� ����� default ��������� ��� ��������������.) ����� case ��� ��������� ������������ ����� �������� �������������� ��� ������������� ���� �����.
�������������, ���� ����������� �����-���� �������������� ANSI C ������������������ (��������������, ��� ��� ��������).
�������������, ���� ���������� �� ������������ ��� �� ��������, ��� ���� ������� ��������� static, �� ����� �� ����������, ��� ���� ����� ���������, �� �� ������������, ��� ���� �������� ��������� ��������, ������� ����� ����� �� ������������.
����� �������� ������ ������ �������������� �� ��������� ������ ��������� ����� ��� ���������� � void. ��� �� ������������ ���������� � ���������� ����������� ������� 'unused' (��. ������ 6.28 [�������� ����������]).
�������������� ���������� ������������ ��� �������������.
��� �������������� �������� ������ � �������������� ����������, ��������� ��������� ������ ������ ������ ����������� ������ ��� �����������. ���� �� �� ����������� ����� '-O', �� ������ �� �������� ��� ��������������.
��� �������������� �������� ������ ��� ����������, ������� �������� ����������� �� ��������� ���������. �������������, ��� �� �������� ��� ��� ����������, ������� ��������� volatile, ��� ���, ��� ����� �������, ��� ��� ������ ������� �� 1, 2, 4 ��� 8 ����. ���, �����, �� �������� ��� ��������, ����������� � ��������, ���� ���� ��� ����������� �� ���������.
�������, ��� ����� �� ���� �������������� � ����������, ������� ������������ ������ ����� ��������� ��������, ������� ����� �� ������������, ������ ��� ��� ���������� ����� ���� ������� �������� ������ ������ ������, ��� ���������� ��������������.
��� �������������� ������� ���������������, ������ ��� GNU CC ������������ ����, ����� ������ ��� ������, ��� ������ ��� ����� ���� ����������, �������� �� ��������� ������. ���� ������� ���� ������, ��� ����� ����� ���������:
{
int x;
switch (y)
{
case 1: x = 1;
break;
case 2: x = 4:
break;
case 3: x = 5;
}
foo (x);
}
���� �������� y ������ ���� 1, 2 ��� 3, ����� x ������
����������������, �� GNU CC �� ����� �����. ���� ������� ������ �����
������:
{
int save_y;
if (change_y) save_y = y, y = new_y;
...
if (change_y) y = save_y;
}
����� ��� ������, ������ ��� save_y ������������, ������ ����
��� ���� �����������.
��������� ������ �������������� ����� ���� ���������, ���� �� �������� ��� ������������ �������, ������� ������� �� ���������� ����������, ��� noreturn. ��. ������ 6.22 [�������� �������].
��� ����������������� ����� '-W' ������ ������.
���������� ����� '-W...' �� ���������� � '-Wall', ������ ��� ��� ������������� � ������������, ������� �� ������� �������� ������������ ��� ������ � ������� ����������.
�������� �������������� �������������� ��� ��������� �������:
foo (a)
{
if (a > 0)
return a;
}
������������� �� ������������ ������������, ������� ����� ���� ����������� � ������������ � ANSI C.
�������������, ����� ���� ��������� ���������� �������� ������ ��������� ����������.
�������������, ����� � ���� ��������� ��������������� ��������� ������ ������� � ����������, ������������ ���������� "�����". ��� ����� ��� ������ ����������� ��������� � ���������� ����������, ������������ ������������.
�������������, ����� ����������� ������ �������� ������ ��� "�����" ����.
������������� ��� ����, ��� ������� �� �������� ���� ������� � ���� void. GNU C ��������� ���� ����� ������ 1 ��� �������� ���������� � ����������� �� void � �� �������.
�������������, ����� ����� ������� ���������� � ������������������ ����. ��������, ����� int malloc () ���������� � ���������.
�������������, ����� ��������� ���������� ���, ����� ������ ������������ ����. ��������, const char * ���������� � �������� char *.
�������������, ���� ��������� ���������� ���, ��� ���������� ���������� �� ������������. ��������, ���� char * ���������� � int * �� ������, ��� int ����� ����������� ������ �� ����- ��� ��������������� �������.
���� ��������� ���������� ��� const char[�����] ���, ��� ����������� ������ � �� ����������� ��������� �� char ������� ��������������. ��� �������������� ������� ��� ����� ��� ������� ����������, ������� ����� �������� ������ � ��������� ���������, �� ������ � ��� ������, ���� �� ������ ����������� ���������� � ������������� const � ����������� � ����������. � ��������� ������ ��� ����������� ������ � ������������; ��� ������ �� �� ���������� '-Wall' �������� ��� ��������������.
�������������, ���� �������� �������� �������������� ���� �������� �� ����, ������� ���� �� � ��� �� ���������� ��� ���������� ���������. ��� �������� �������������� ������������� ����� � ��������� � �. �., � ��������������, �������� ������ ��� ���������� �������������� ���������, ����� ���, ������� ��������� � ������������� �����������.
����� �������������, ���� ������������� ����� ��������� ������ ���������� � ������������ ����. ��������, ������������� �� ������������ x = -1, ���� x �����������. �� �� ������������� �� ����� �������� �������������� ���� (unsigned)-1.
�������������, ���� ������������ ��� ���������� �������, ������� ���������� ���������. (� ������, ��� ����� ���������� �������, ��� ����� �������� ��������������.)
�������������, ���� ������� ��������� ��� ���������� ��� ������������ ����� ����������. (����������� ������� � ������ ����� �� �������� ��������������, ���� ����� ��� ���� ���������� � ���������� ������ ����������.)
�������������, ���� ���������� ������� ���������� ��� ���������������� ���������� ���������. ��� �������������� ����������, ���� ���� ���� ����������� ���� ��������. ���� ����� �������������� � ���, ����� ������� ���������� �������, ������� �� ��������� � ������������ ������.
�������������, ���� ����� ��������� ����� ��� ���� ��� � ����� ������� �������� ���� � ��� ������, ��� ������������ ���������� ��������� � ������ �� ������.
�������������, ���� extern ���������� ����������� ������ ������ �������.
�������������, ���� ������� �� ����� ���� ������� inline � ��� ���� ���� ��������� inline, ��� �� ���� ���� ����� '-finline-functions'.
���������� ��� �������������� � ������.
GNU CC ����� ��������� ����������� �����, ������� ������������ ��� ������� ��� ����� ���������, ��� � GCC.
��������� ���������� ���������� � ������ ������� ������������ ������� (stabs, COFF, XCOFF ��� DWARF). GDB ����� �������� � ���� ���������� �����������.
� ����������� ������, ������� ���������� ������ stabs, '-g' �������� ������������� �������������� ���������� ����������, ������� ����� ������������ ������ GDB; ��� �������������� ���������� ���������� ������ ������ ������� � GDB �����, �� �����, �������� ��������� ������ ������ ����������, ��� �������� �� ��������� ���������. ���� �� ������ ��������� ���, ����� �� ����������� �������������� ����������, ����������� '-gstabs+', '-gstabs', '-gxcoff+', '-gxcoff', '-gdwarf+', '-gdwarf' (��. ����).
� ������� �� ����������� ������ ������������ C, GNU CC ��������� ������������ ����� '-g' ������ � '-O'. ���������� ���� ��������� ��� ����������� ����� �������� �������� � ����������� �����������: ��������� ����������, ������� �� �������� ����� �� ������������ �����; ����� ���������� ����� �������������, ����� �� ����� �� �������; ��������� ��������� ����� �� �����������, ������ ��� ��� ���������� ���������� ��������, ��� �� �� ��������� ��� ��������; ��������� ��������� ����� ����������� � ������ ������, ������ ��� �� ������� �� ������.
��� �� �����, GNU CC ���� ����������� ���������� ���������������� ���������. ��� ������ �������� ������������� ������������ ��� ������� ��������, ������� ����� ��������� ������.
��������� ����� �������, ���� GNU CC ������������ � ������������ ������������ ����� ��� ���� ������ ���������� ����������.
��������� ���������� ���������� � ������ ������� (���� �� ��������������), ���������� ���������� GDB, ���� ��� ������ ��������.
��������� ���������� ���������� � ������� stabs (���� �� ��������������) ��� ���������� GDB. ��� ������, ������������ DBX'�� � ����������� BSD ������. �� MIPS, Alpha � � ������� System V Release 4 ��� ����� ��������� ���������� ���������� � ������� stabs, ������� �� �������� DBX ��� SDB. � ������� System V Realease 4 ��� ����� ������� ���������� GNU.
��������� ���������� ���������� � ������� stabs (���� �� ��������������) � �������������� ���������� GNU, ������� �������� ������ �������� GNU (GDB). ������������� ���� ���������� � ������� ����������� �������� �������� � �� ����� ��� �������� ��������� ���������.
��������� ���������� ���������� � ������� COFF (���� �� ��������������). ���� ������ ������������� SDB � �������� System V �� System V Release 4.
��������� ���������� ���������� � ������� XCOFF (���� �� ��������������). ��� ������, ������������ ���������� DBX � �������� IBM RS/6000.
��������� ���������� ���������� � ������� XCOFF (���� �� ��������������) � �������������� ���������� GNU, ������� �������� ������ �������� GNU (GDB). ������������� ���� ���������� � ������� ����������� �������� �������� � �� ����� ��� �������� ��������� ���������, � ����� ����� �������� ���������, �������� �� ���������� GNU (GAS), � ������.
��������� ���������� ���������� � ������� DWARF (���� �� ��������������). ���� ������ ������������ SDB � ����������� ������ System V Release 4.
��������� ���������� ���������� � ������� DWARF (���� �� ��������������) � �������������� ���������� GNU, ������� �������� ������ �������� GNU (GDB). ������������� ���� ���������� � ������� ����������� �������� �������� � �� ����� ��� �������� ��������� ���������.
�������� ���������� ����������, � ����� ���������� '�������', ����� ���������� ��� ����� ���������� ���������. �� ��������� ������������ ������� 2.
������� 1 ������� ����������� ����������, �����������, ����� ����������� ������� ������� � ������ ���������, ������� �� �� ����������� ����������. ��� �������� � ���� �������� ������� � ������� ����������, �� �� �������� ���������� �� ��������� ���������� � ������� �����.
������� 3 �������� �������������� ����������, ����� ��� ��� ����� ����������� ������������� � ���������. ��������� ��������� ������������ ����� ���������� ��� ������������� '-g3'.
��������� �������������� ��� ��� ������ ������������� ����������, ���������� ��� ������������� ��������� prof. �� ������ ������������ ��� ����� ��� ���������� ��������� �����, � ������� �� ������ �������� ����������, � �� ����� ������ ������������ �� ��� ��������.
��������� �������������� ��� ��� ������ ������������� ����������, ���������� ��� ������������� ��������� gprof. �� ������ ������������ ��� ����� ��� ���������� ��������� �����, � ������� �� ������ �������� ����������, � �� ����� ������ ������������ �� ��� ��������.
��������� �������������� ��� ��� ������ ������������� ���������� ��� �������� ������, ������� ����� ����������, ������� ��� ����������� ������ �������� ����, ��� ��������� ����� � ��� �������, ������� ��� ��������. ���� ������������ ����� '-g', ����� ����� ������������ ����� ������ � ��� ����� ������ ��������� �����. ���� �� �������� ��������� ����������� ������, �� ��������� �� ��������� �������� ���������� � ���������� ����� 'bb.out'.
��� ������ ����� ���� ���������������� ���������� ����� tcov. �������, ������, ��� ������ ������ �� �����, ��� ������� tcov. GNU gprof �� �������� ����� �������� ��� ��������� ���� ������.
������ ���������� ����� �� ����� ���������� � ������� ������� ������������ �������. ��� ������������ ��� ������� �����������. ����� ������ ��� ����������� ������ ���������� �� ����� ��������� ����� ����������� ����� (��������, 'foo.c.rtl' ��� 'foo.c.jump'). ���� ������� ��������� ����� � �� ��������:
���� ���� ����� ����������� � ����� ������������������; �� ��������� ������� ������.
���� ���� ����� ����������� � ����� ������������������.
���� ���� ����� ����������� � ����� ������������������, � ���������� � ���������� ������.
���� ���������� ���������� �� ����� ������������ ������� � ����������� ����� ������.
���� ����� ��������� RTL � ���� '����.rtl'.
������ ������������ RTL ��� ������� ������ �� ����������. ������ ������������ ������ � 'r'.
���� ����� ������ ����������� ��������� � ���� '����.jump'.
���� ����� CSE (������� ����������� ���������, ������� ������ ������� �� CSE) � ���� '����.cse'.
���� ����� ����������� ������ � ���� '����.loop'.
���� ����� ������� ������� CSE (������� ����������� ���������, ������� ������ ������� �� CSE) � ���� '����.cse2'.
���� ����� ������� ������ � ���� '����.flow'.
���� ����� �������������� ���������� � ���� '����.combine'.
���� ����� ������� ������� ������������ � ���� '����.sched'.
���� ����� ���������� ������������� ��������� � ���� '����.lreg'.
���� ����� ����������� ������������� ��������� � ���� '����.greg'.
���� ����� ������� ������� ������������ � ���� '����.sched2'.
���� ����� ��������� ����������� ��������� � ���� '����.jump2'.
���� ����� ������������ ������ � ���� '����.dbr'.
���� ����� �������������� ��������� � ���� � ���� '����.stack'.
��������� ��� �����, ������������� ����.
�������� ���������� ������������� ������ � ����� ���������� � ����������� ����� ������.
������������ ������������ ����� �������������, ������������� ����� ������ � ����� ������������ ���� ������������.
��� ������� �����-����������� ������ ���, ��� ������� ������ ���������� ��� �� ������ ����� � ��������� ������, ��� � ������� ������. ��� �������� � ��������� ������ �������� �������� � ��������� ������, �� �������� ������������������ ���������� �����, ��������, ����� �� ��� � ������������������, ����������� GNU CC ��� ������� �� ������� ������.
��������� ��������� ������������� "���������" �����; ��� ���������� � ������� �������, � �� ����� ������������ �� ����� ��������� �����. ���, ���������� 'foo.c' � ������� '-c -save-temps', ����� ��������� ����� 'foo.i', 'foo.s', ����� ��� � 'foo.o'.
�������� ������ ���������� ��� ������������� ����� '����������', ������� �������������� �� ��� ��������, � �� ������ ������ ������. � ���� ������ GNU CC ������ �� ����������� � �� ������� - �� ������ �������� ��� �����.
������� '-print-file-name', �� ���� ���������, ����� ���, ��������, 'cpp'.
��������� � '-print-file-name=libgcc.a'.
��� ����� �������, ����� �� ����������� '-nostdlib' ��� '-nodefaultlibs', �� �� ������ ��������� � 'libgcc.a'. �� ������ ��������
gcc -nostdlib �����... 'gcc -print-libgcc-file-name'.
�������� ��� ������������������ �������������� ����������, ������ �������� � ������������ �����������, ������� ����� ������������� gcc � �� ������ ������ ������.
��� ����� �������, ����� gcc �������� ��������� �� ������ 'installation problems, cannot exec cpp: No such file or directory' ('�������� ����������, ���������� ��������� cpp: ��� ������ ����� ��� ����������'). ����� ��������� ��� ��������, �� ���� ������ ��������� 'cpp' � ������ ���������� ����������� ���, ��� gcc ������� �� �����, ���� �� ������ ���������� ���������� ��������� GCC_EXEC_PREFIX ������ ����������, ��� �� �� ���������. �� ��������� ������������� ������� '/'. ��. ������ [���������� ���������].
��� ����� ��������� ���������� ������ �����������:
��������������. ���������������� ���������� ������� ��������� ������ ������� � ��������� ������ ������ ��� ������� �������.
��� `-O' ���� ����������� ����o�� � ���, ����� ��������� ��������� ���������� � ������ ��������� ���������� ��� �������. ��������� ����������: ���� �� �������������� ��������� �� ����������� ����� ����� �����������, �� ������ ��������� ����� �������� ����� ���������� ��� ��������� ������� ������ �� ����� ������ �������� � ������� � �������� ����� ����� ����������, ������� �� ������� �� ��������� ������.
��� `-O' ���������� ������ ������������ ���������� ����������� register � ���������. ������������ � ���������� ����������������� ��� ������� ���� ��� ������������� PCC ��� `-O'.
� `-O' ���������� ������� ��������� ������ ���� � ����� ����������.
����� �� ������� `-O', ���������� �������� `-fthread-jumps' � `-fdefer-pop' �� ���� �������. ���������� �������� `-fdelayed-branch' �� �������, ������� ����� ���� ��������, � `-fomit-frame-pointer' �� �������, ������� ����� ������������ ������� ���� ��� ��������� ������. �� ��������� ������� ���������� ����� �������� ������ �����.
������������ ���� ������. GNU CC ��������� ����� ��� �������������� �����������, ������� �� �������� ���������� ������� ���������� �� ���� ���������� ����� ����. ���������� �� ��������� ��������� ������ ��� ����������� �������, ����� �� ���������� `-O2'. �� ��������� � `-O' ��� ����� ����������� ��� ����� ����������, ��� � ������������� ���������������� ����.
`-O2' �������� ��� �������������� ����������� ����� ��������� ������ � ����������� �������. ��� ����� �������� ����� `-fforce-mem' �� ���� ������� � ���������� ��������� ������ �� �������, ��� ��� �� �������� �������.
������������ ��� ������. `-O3' �������� ��� �����������, ������������ `-O2', � ����� �������� ����� `inline-functions'.
�� ��������������.
����� ���� `-f����' ���������� �������-����������� �����. ����������� ������ ����� ������������� � ������������� �����; ������������� ������ `-ffoo' ����� `-fno-foo'. � �������, ������������� ����, ������� ������ ���� �� ���� - ��, ������� �� �������� ����������. �� ������ ��������������� ������ ����� ��������� ��� ����������� '-no'.
�� ��������� ��������� ���������� � ��������� ������ � ��������� � ������������ ������ ������, ������� ����� ��������, ������ ������� �������� � ��������� ������ - �� �������� ��� �� ������.
��� ����� ������������� ������������� �������� �������� �� ������� ���� 68000, ��� �������� � ��������� ������ (�� 68881) ������ ������� ��������, ��� ����� double. ��� ����������� ��������, �������� �������� ������ ������ �����, �� ��������� ��������� ���������� �� ������ �������� ��������� ����� IEEE. ����������� `-ffloat-store' ��� ����� ��������.
������ ����������� ��������� ������� ������ ������� ����� ����� �������� �� ���. ��� �����, ������� ������ ����������� ��������� ����� ��������� � �������, ���������� ������ ��������� ���������� ������������� �� ����� ��� ���������� ������� �������, � ����������� �� ��� �����.
���������� ���������� �������� � ������ � �������� ����� ����������� � ���� �������������� ��������. ��� ���������� ������ ���, ��������� ��� ������ ���������� �������������� ������ ��������������. ���� ��� �� �������� ������ ��������������, ���������������� ������ ������ ��������� ��������� �������� ���������. ����� '-O2' �������� ��� �����.
���������� ���������� ����������� ������ ������ � �������� ����� ����������� � ���� �������������� ��������. ��� ���������� ������ ��� ����� ����� ��� � '-fforce-mem'.
�� ������ ��������� ������ ��� �������, ������� �� ��������� � ���. ��� �������� ������ ����������, ��������� � �������������� ��������� ������; ��� ����� ������ ��������� �������������� ������� �� ������ ��������. ��� ������ ������� ����������� �� ��������� �������.
�� ��������� �������, ����� ��� Vax, ���� ������ �� ����� �������, ������ ��� ����������� ���������� ������������������ ������������� ������������ ��������� ������, � ������ �� ����������, ���� ���������, ��� �� �� ����������. ������ `FRAME_POINTER_REQUIRED' � �������� ����������� ��������� ���, ������������ �� ������� ������ ���� ���� ��� ���. ��. ������ [��������].
�� �������� �������� �� �������� ����� inline. ������ ��� ����� ������������, ����� ������� ���������� �� ����������� ����� �������. �������� �������� ���, ���� �� �� �������������, ������� ������� �� ����� ���� �����������.
����������� ��� ������� ������� � ���������� �������. ���������� ������������ ������, ����� ������� ���������� ������, ����� �� ������ ������������� ����� �������.
���� ��� ������ � ������ ������� �������������, � ������� ��������� static, ����� ������������ ��� ������� ������ �� ��������� � ����� ��������� ����.
���� ���� ��� ������ � ������ ������� �������������, � ������� ��������� static, �������, ������, ��������� ���������� �� ����� ���������� ������ �������.
�� ������ ������ ������� � ��������; ������ ����������, ������� �������� ���������� ������� ���� �������� ����� �������.
��� ����� �������� � ����� ������������ ����, �� ��������� �������� �����, ������� �������� ������������ ���, ����� ���� ������� ������������, �����������, ����� ��� ����� �� ������������.
��� ����� ��������� GCC �������� ��������� ANSI ��� IEEE ������� �/��� ������������ � ����� ����������� �������������� ����. �������, ��� ��������� ����������� �������, ��� ��������� ������� sqrt �������� ���������������� �������, � ��� ������� �������� � ��������� ������ �� �������� NaNs.
��� ����� �� ������ ������� ���������� ����� �� `-O' �����, ��� ��� ��� ����� ��������� � ������������� ���������� ��� ��������, ������� ������� �� ������� ���������� ������/������������ IEEE ��� ANSI ��� �������������� �������.
��������� ����� ��������� �������������� �������������. ����� `-O2' �������� ��� ��� ����������� �� ����������� `-funroll-loops' � `-funroll-all-loops'. �� ����������� ����� ����� '-O' �������� ����� `-fthread-jumps' � `-fdelayed-branch', �� ��������� ������ ����� ������������ �� ��-�������.
�� ������ ������������ ��������� ����� � ��� ������ �������, ����� ���������� ��������� "������ ���������" �����������.
��������� ����������� ������: ��������� ���� �������� � ���������� ����������� ����������.
��������� ����������� ��������� ��������, ���� ����������, ��� �� ��������� � �������, ��� ��������� ������ ��������� ����������� �������. ���� ���, �� ������ ������� ��������������� �� ����� ���������� ������� �������� ��� ����� ����� ����� ����, � ����������� �� ����, ������ �� ���� ������ ������� �������� ��� ������.
� ���������� ����� ������������ �������� ����� ������� ��������, ���� ����� ���������� �������� �� ����������� ������� ������ ���������. ��������, ����� CSE ������������ � ���������� if � ������ else, CSE ����� ��������� �������� � ������, ����� ����������� ������� �����.
������� `-fcse-follow-jumps', �� ���������� CSE ��������� ���������, ������� ������� ���������� �����. ����� CSE ������������ � ������� ���������� if ��� ����� else, `-fcse-skip-blocks' ���������� CSE ��������� �������� ������ ���� if.
�������� ����������� ����� �������� ������������ ����� ����������� ������.
��������� ��� ����� �����������, ������� �������� ������������ ��������.
���� �������������� ��� ������� ������, �������� ����������������� ���������� ���, ����� ��������������� ���� �������� ��������� ����� ����������� ������� ��������.
���� �������������� ��� ������� ������, �������� ��������������� ���������� ���, ����� ��������� ������� ���������� ��-�� ����, ��� ����������� ��������� ������. ��� �������� �������, ������� ����� ��������� ���������� � ��������� ������ ��� �������� ������, ��� ���������� ������ �������� �����������, ���� ��������� �������� ��� ���������� � ��������� ������ �� ���������.
������� `-fschedule-insns', �� ����������� �������������� ������ ������������ ����� ����, ��� ���� ��������� ������������� ���������. ��� �������� ������� �� ������� � ������������ ��������� ������ ��������� � ���, ��� ������� �������� ������ ������� ������ ��� ���� ����.
���� ����������� ���������� �������� � ���������, ������� ���������� �������� �������, � ����������� �������������� ������ ���������� � �������������� ��������� ������ ����� �������. ����� ������������� ����������� ������ �����, ����� �������, ��� ��� �������� � ������� ���� ��� ������.
��� ����� ���������� �� ��������� �� ��������� �������, ������ �� ���, ������� �� ����� ������� ����������� ��� ������ ��������� ��� ������������� ������.
��������� ��������� ������. ��� ������������� ������ ��� ������, ����� �������� ������� ����� ���������� � �������� ���������� ��� �� ����� ����������. `-funroll-loop' ������������� � `-fstrength-reduce' � `-frerun-cse-after-loop'.
��������� ��������� ������. ��� ����������� ��� ���� ������ � ������ ������ ��������� ����� ����������. `-funroll-all-loops' ������������� `-fstrength-reduce', ����� ��� � `-frerun-cse-after-loop'.
��������� ����� peephole-����������� ������������� ��� ������.
��� ����� ��������� �������������� C, ������� ������������ ������ C �������� ���� ����� ����������� �����������.
���� �� ����������� ����� `-E', ������ ����� ������������������ �� ��������. ��������� �� ���� ����� ����� ����� ������ ������ � `-E', ������ ��� ��� ������ ����� ������������� ������������ ��� ����������� ����������.
������������ '����' ��� ���� ����� ���������� �������� �������� �����. ����������, ���������� '�����' ������������� �������. ����� ����� '-D' ��� '-U' �� ��������� ������ �������������� �� '-include ����', ��� ����������� �� �������, � ������� ��� ��������. ��� ����� '-include' � '-imacros' �������������� � ��� �������, � ������� ��� ��������.
������������ '����' ��� ����, ���������� ����������� � ���������� ����� �� ��������� �������� �������� �����. ��� ��� ����� ��������������� �� '�����' �������������, ����������� ������ `-imacros ����' ������� � ���, ��� ������������ ������������ � '�����' ���������� �������� ��� ���������� � ������� �����.
����� ����� '-D' ��� '-U' �� ��������� ������ �������������� �� '-imacros ����', ��� ����������� �� �������, � ������� ��� ��������. ��� ����� '-include' � '-imacros' �������������� � ��� �������, � ������� ��� ��������.
��������� ������� '����������' �� ������� �������� ���������. � ��������� ������� �������� ��������� ����, ����� ������������ ���� �� ��������� �� � ����� �� ��������� � ������� �������� ��������� (�������, � �������� ��������� ����� `-I').
���������� '�������' ��� ������� ��� ������������� ����� `-iwithprefix'.
��������� ������� �� ������� �������� ���������. ��� �������� ���������� ������������ '��������' � '����������', ��� '�������' ����������� �������������� ������ `-iprefix'. ���� �� ��� �� ���������� �������, �� ��������� ������������ �������, ���������� ��������������� ������� �����������.
��������� ������� � �������� �������� ���������. ��� �������� ���������� ������������ '��������' � '����������', ��� � ������ `-iwithprefix'.
��������� ������� '����������' � ������ ������� �������� ���������, ������� ��� ��� ��������� �������, ��� ��� �� ����� �� �� ����� ����������� ���������, ��� � ����������� ��������� ��������.
�� ���� � ����������� ��������� ��������� ��� ������������ ������. ������ ��������, ������� �� ���������� ������� `-I' (� ������� �������, ���� ��������) ������������ ��� ������. ��. ������ [����� ��- ��������] ��� ���������� �� '-I'.
��������� `-nostdinc' � `-I-', �� ������ ���������� ������� ������ ������ ��������� ������ ���� ����������, ������� �� ������ ����.
�� �������������� ����� ������������� �������. (������� ����� �����������).
��������� ������ ������������ C. ��������������� ��� ��������� C �������� ����� � ������� ���������� � ����������� ����� ��� � ��������� �������� ����.
������� ������������� �� ����������� �����������. ������������ � ������ `-E'.
������� ������������� �� ������������ ��������� `#line'. ������������ � ������ '-E'.
������� ������������� �������� ������� ��� make, ����������� ����������� ������� ���������� �����. ��� ������� ��������� �����, ������������ ������� ���� make-�������, ��� ���� - ��� ���������� �����, ��� �������� �������� ���� � ����� ������������� �������� ��� #include ������������ �����, ������� �� ����������. ��� ������� ����� ���� ��������� ������� ��� ����� ���� ���������� � ������� `\'-����� ������, ���� ��� �������. ������ ������ ���������� � ����������� ����� ������ ������������������� C ���������.
`-M' ������������� `-E'.
������ ������ ������� ����� make-������ - � ������� ��������� ���������� ��������� DEPENDENCIES_OUTPUT (��. ������ [���������� ���������]).
������� `-M', �� ����� ��������� ������ ������������ ����� ������������, ���������� � ������� `#include "����"'. ��������� ������������ �����, ���������� � ������� `#include <����>' ����������.
������� `-M', �� ���������� � ������������ ������������ � ���� ������������� ��� ������ ".c" �� ".d" �� ������ ���� ������� ������. ��� �������� � ���������� � ��������� ���������� ����� - `-MD' �� ��������� ������� ����������, ��� ��� ������ '-M'.
� Mach �� ������ ������������ ������� `md', ����� ���������� �������������� ����� ������������ � ���� ����, ���������� ��� ������������� � �������� make.
������� `-MD', �� ����������� ���������� ������ ���������������� ������������ ������, �� �� ��������� ������������ ������.
������������ ������������� ������������ ����� ��� ������������ ����� � �������, ��� ��� ��������� � ��� �� ����� ��������, ��� � �������� ����. ���� �� ���������� `-MG', �� ����� ������ ��������� ��� `-M', ��� `-MM'. `-MG' �� �������������� � `-MD' ��� `-MMD'.
�������� ��� ������� ������������� ������������� ����� � ���������� � ���������� ���������.
��������� ����� '�����' ��� '�������', � ������, ���� �� ����������� �������� ���������� ������������� ���� `#if #������(�����)'. `-A-' ��������� ����������� �����������, ������� ������ ��������� ������� ������.
���������� ������ '������' �� ������� `1' � �������� ��� �����������.
���������� ������ '������' ��� '�����������'. ��� ���������� `-D' � ��������� ������ �������������� �� ����� ����� `-U'.
�������� ����������� ������� '������'. ����� `-U' �������������� ����� ���� ����� `-D', �� ����� ������ `-include' � `-imacros' �������.
������� ������������� ������� ������ ������ ����������������, ������� ����� �������� � ����� ������������������. ������������ � ������ `-E'.
������� ������������� �������� ��� ���������������� � ����� � �� ������������������ � ������ ������.
������� `-dD', �� ����������� ����, ��� �������������� � ���������� ����������. � ����� ���������� ������ `#define ���'.
������������ ������������ ������������������ ANSI C. ����� `-ansi' ����� ����� ���� ������.
�������� '�����' � �������� ����� �������������. ���� '�����' �������� �������, ��� ������������ �������� �� �������������� �����.
�� ������ �������� ����� ����������.
�������� '�����' � �������� ����� ����������. ���� '�����' �������� �������, ��� ������������ �������� �� �������������� �����.
��� ����� �������� � ���� �����, ����� ���������� ������� ��������� ����� � ���������� �������� ����. ��� ������������, ���� ���������� �� ��������� ��� ��������.
��� �����, ������� �� ������������� ����������� ����������� ���������, ��������� ������ ���������� ����� ��� ����������. (��������� ����� ���������� �������� �� ��������� �� ����������� �����.) ���� ����������� ��������, ��� ��������� ����� ������������ � �������� ����� ��� �������.
���� ������������ ����� �� ���� �����, �� ������ �� �����������, � ����� ��������� ������ �� ������ �������������� � �������� ����������. ��. ������ [����� �����].
���� ��� �������� ���������� � ������ '����������'.
���� �������� � ���, ��� � �������� ������ �� ����������� ��� �����; ������ ���� �������������� ���������� � ��������� ����� � �������, � ������� ��� �������. ����� �������, `foo.o -lz bar.o' ���� ���������� `z' ����� ����� `foo.o', �� ����� `bar.o'. ���� `bar.o' ��������� �� ������� � `z', ��� ������� �� ����� ���� ���������.
������ ������������� ����������� ������ ��������� � ������ ����������, �������, ����������, �������� ������ � ������ `lib����������.a'. ����� ������ ���������� ���� ���� ���, ��� ����� �� �� ��� ����� �������������� �� �����.
����������, � ������� ���� ������, �������� ��������� ����������� ��������� ���������, ���� ����� ��������, ������� �� ����������� � ������� `-L'.
������ �����, ������������ ���� �������� �������� ������������� ������� - ��������� �������, ��� �������� - ��������� �����. ������ ������������ �������� ����, ������������ ��� � ������ ���������, ������� ���������� �������, �� ������� ���� ������, �� ������� �� ��� ��� �� ������������. ��, ���� �����������, ��� ������������ ���� - ������� ��������� ����, �� �� ��������� � ������� �������. ������������ �������� ����� �������������� ����� `-l' � ��������� ����� ����� � ���, ��� `-l' ��������� � '����������' `lib' � `.a' � ���� � ���������� �����������.
��� ����� ���� ����������� ������ ����� `-l' ��� �������� Objective C ��������.
�� ���������� ����������� ��������� ����� ���������� ������� ��� ��������. ����������� ��������� ���������� ������������ ��� ������, ���� �� ������� `-nostdlib' ��� `-nodefaultlibs'.
�� ���������� ����������� ��������� ���������� ��� ��������. ������� ���������� ������ �� ����������, ������� �� ����������. ����������� ����� ���������� ������� ������������ ��� ������, ���� �� ������� `-nostartfiles'.
�� ���������� ����������� ��������� ����� ���������� ������� � ���������� ��� ��������. ������� ����� ������� � ������ �� ����������, ������� �� ���������� �����, �������� �������.
����� �� ����������� ���������, ��������� `-nostdlib' � `-nodefaultlibs' �������� `libgcc.a' - ���������� ���������� �����������, ������� ���������� GNU CC, ����� ������������ ������ ���������� �����, ��� ��� ����������� ������������ ��������� ������. (��. ����� 13 [��������� � ������ GNU CC] ��� ���������� ������������ `libgcc.a'.) � ����������� �������, �� ���������� � `libgcc.a', ���� ����� �� ������ �������� ������ ����������� ���������. ������� �������, ����� �� ���������� `-nostdlib' ��� `-nodefaultlibs', �� ������ ������ ����� ��������� `-lgcc'. ��� �����������, ��� ��� ������� ��������� ������ � ���������� ������������ ������������� GNU CC. ( ��������, `__main' , ������������, ����� ������������� ����� ������������� C++.)
������� ��� ���������� ������� � ���������� � ������������ �� ������������ �����.
� ��������, ������� ������������ ������������ ��������, ������������� �������� � ������������ ������������. � ������ ��������, ��� ����� �� ����� �������� �������.
���������� ����������� ������, ������� ����� ����� ���� ��������� � ������� ���������, ����� �������������� ���������� ����. ������ ��������� ������� ������������ ��� �����.
��������� ������ � ���������� �������� ��� ������������ ������������ �������. ������������� � ����� ������������� ������ (���� �� �������� ������ ��������� ������ `-Xlinker -z -Xlinker �����������' ). ������ ��������� ������� ������������ ��� �����.
�������� '�����' � �������� ����� �������. �� ������ ������������ ��, ����� ������������ ������������� ��� ������� ����� �������, � ������� GNU CC �� ����� ��� ������������.
���� �� ������ �������� �����, ������� ����� ��������, �� ������ ������������ `-Xlinker' ������: ���� ��� ��� ����� � ���� ��� ��� ���������. ��������, ����� �������� `-assert ��������', �� ������ �������� `-Xlinker -assert -Xlinker ��������'. �� �����������, ���� �������� `-Xlinker " -assert �������� " ', ������ ��� ��� �������� ��� c����� ��� ������ ��������, ������� �� ��������� ��������.
�������� '�����' � �������� ����� �������. ���� '�����' �������� �������, ��� ������������ �������� �� �������������� �����.
������ ���, ��� ������ '������' �����������, �������� ��������� ������������ ������ ���������� ���. �� ������ ������������ `-u' ����� ���� � ���������� ���������, ����� ������� �������� �������������� ������������ �������.
��� ����� ���������� �������� ��� ������ ������������ ������, ��������� � ������ �����������:
��������� ������� '����������' � ������ ������ ���������, ������������ ��� ������ ������������ ������. �� ����� ������������ ��� ������� ��������� ������������ ������, ���������� ���� ����������� ������, ��������� ��� ���������� ��������������� �� ���������� ��������� ������������ ������. ���� �� ����������� ����� ��� ���� ����� '-I', ���������� ��������������� � ������� ����� �������; ����������� ��������� ���������� ���� �����.
����� ��������, ������� �� ���������� � ������� `-I' �� ����� `-I-' ��������������� ������ � ������ `#include "����"'; ��� �� ��������������� ��� `#include <����>'.
���� �������������� �������� ������� � ������� `-I' ����� ����� `-I-', ��� �������� ��������������� ��� ���� �������� `#include'. (������ ��� `-I' ���������� ������������ ����� ��������.)
����� ����, ����� `-I-' ��������� ������������� �������� �������� (������ ������ ������� ������� ����) � �������� ������� �������� ��� ������ `#include "����"'. ��� �������� ������� �������� ���� ������ ����� `-I-'. � ������� `-I.' �� ������ ������� ����� � ��������, ������� ��� �������, ����� ��������� ����������. ��� �� ����� �� �� �����, ��� ������ ������������ �� ���������, �� ����� ��������.
'-I-' �� ��������� ������������� ����������� ��������� ����������� ��� ������������ ������. ����� �������, '-I-' � '-nostdinc' �������� ������������.
��� ����� ��������� ��� ������ ����������, ������������ � ������������ �����, � ����� ����� ������ ��� ������ �����������.
����������� ��������� ����������� ��������� ���� ��� ������ �������� 'cpp', 'cc1', 'as' � 'ld'. �� �������� ������������ '�������' � �������� �������� ��� ������ ���������, ������� �� ���������, ��� � ��� � ��� '������/������/' (��. ������ [������� �����]).
��� ������ ����������� ��������� ���������� ������� �������� ������������ ������� '-B', ���� ������. ���� ����� ��� �� �������, ��� ����� '-B' �� �������, ���������� �������� ������������ ��� ����������� ��������: '/usr/lib/gcc/' � '/usr/local/lib/gcc-lib/'. ���� �� ���� �� ���� ��������� �� ���� ����������, �� ���������������� ��� ��������� ������ � �������������� ���������� ��������� � ����� ���������� ��������� 'PATH'.
������� '-B', ������� ���������� ��������� ����� ����������, ����� ����������� � ����������� � �������, ��������� ���������� ����������� ��� ����� � ����� '-L' ��� �������. ���, �����, ����������� � ������������ ������ � �������������, ��������� ���������� ����������� ��� ����� � ����� '-isystem' ��� �������������. � ���� ������ ���������� ��������� 'include' � ��������.
���� ��������� ������� ���������� 'libgcc.a' ����� ����� ��������, ���� �����, � �������������� �������� '-B'. ���� �� �� ������ ���, ������������ ��� ����������� ��������, ��������� ����, � ��� ���. ���� ��������� �� ��������, ���� �� �� ������ ����� ��������.
������ ������ ������� ������� ����� ������� � ��������� '-B' - ������������ ���������� ��������� GCC_EXEC_PREFIX. ��. ������ [���������� ���������].
�� ���������, GNU CC ����������� ��� ��� ��� �� ����� ������, ������� �� �����������. ������, �� ����� ����� ���� ������������� ��� �����-����������, ����� ������������� ��� ������-������ ������� ���� �����. � ����������������, ��������� ��������� ������������ GNU CC, ��� ��������� ������� �����, ����� ���� ����������� ��� � ���. �����, �� ����������, ����� ������������ ������������ � ������� ����� '-b'.
����� ����, ����� ������ � ����� ����� ������ ����������� ����� ���� ����������� ��� � ���. ����� �� ��� (��������, ����� �����) ����� �������� ����������, �� �� ������ �������� ������ ������������ ������.
�������� '������' ��������� ������� ������ ��� ����������. ��� �������, ����� �� ���������� GNU CC � �������� �����-�����������.
��������, ������������ � �������� ��������� '������' - �� ��, ��� ���� ������� ��� ���������������� GNU CC � �������� �����-�����������. ��������, ���� �����-���������� ���������������� � 'configure i386v', ���������� ���������� ��� 80386 � System V, ����� �� ������ ������� '-b i386v', ����� ��������� ���� �����-����������.
����� �� �� ���������� '-b', ��� ������ �������� ���������� ��� ���� �� ������ ���� ������, ������� �� �����������.
�������� '������' ���������, ����� ������ ����������� ���������. ��� �������, ����� ����������� �������������� ������. ��������, '������' ����� ���� '2.0', ������� ������ GNU CC ������ 2.0.
������� �� ���������, ����� �� �� ���������� '-V', �������� ��������� ������ GNU CC, ������� �� ����������.
����� �������, ����� ���������� �������� ����� '-b' � '-V', ���� ������� ����� ���� ����������, ���� ������� �������������� ����� (��� ������������� ������). ���� � ���������� '/usr/local/lib/gcc-lib/' ���� '80386' �������� ������������� ������� �� ���� 'i386v', ����� '-b 80386' ����������� ��������� '-b i386v'.
� ����� �������, ����� '-b' � '-V' �� ������ ����������� �� ������ ����������: ����������� ��������� �������� ������ gcc, ������� �� ������������� �������, ���������� ����������� � �������� ������ ���������� ����� (������������, ��� ����������, ��������� � ������), ������� � ��������� �������� ������. ������, ��������� ������� �������� ������ �� ����������� � ����������� ���������, ������ �� �����, ��� ������������ ����������� ��������� �� �������� ���������� ��� ��������� ������ � ������.
������������ �����, � ������� ����������� ��������� ������� �� ������� ������, � ������� � ��������� ����������� ��������������� �����. ������, ��� �������������� ������, ������� ���������, ������ � ������� ����������� �������, � ���������� ��� ��������� ������ � ������� ������. � ����������, ���� ������������� ����������� ��������� ������������ � ����� ��������� ������� ������ � ������ �����������.
���������� ���� ����������� ���������, ������, ��������� ����� ������ �����: ������� ����������� � ������� ������� �� ���������. �������������, �� ������ ���������� ��������� ���������� ����������� ���������, ���������������� ��� ������ ������� ����� � ������, ��� ���������� �������.
��������, ���� ����������� ��������� ��� ������ 2.0 ����������� ��� ogcc, � ��� ������ 2.1 - ��� gcc, ����� ������� gcc �����, �� ���������, ������������ ������ 2.1, � ogcc - ������ 2.0. ������, �� ������ ������� ����� ������ � ����� �������� � ������� ����� '-V'.
����� �� ��������� ����������� ����� '-b', ������� �������� ����� ��������� ���������������� ������������ ��� ���������� ��������� ����� ������� �����, ����� ��� Vax, 68000, 80386.
� ����������, ������ �� ���� ����� ����� ����� ����� ���� ����������� ����������� �����, ������������ � '-m', ��� ������ ����� ���������� �������� � �������������� �����. ��������, 68010 ��� 68020, ��������� ����������� ��� ���. ���� ������������� ������ ����������� ����� ������������� ��� ����� ������ � ������������, � ������������ � ���������� �������.
��������� ������������ ����������� ����� ������������ �������������� ����������� �����, ������ ��� ������������� � ������� ������������� ��� ��� �� ���������.
��� ����� ������������ � ������� ������� TARGET_SWITCHES � �������� �����������. ��������� ��� ����� ����� ������������ ���� ��������, ������� ��������� ��� ������ ���������.
��� '-m' ����� ���������� ��� ��������� i386 �����������:
��������� ���, �������������� �� ��� ��� 486 ������ 386 ��� ���. ��� ��������������� ��� 486 ����� �������� �� 386 � ��������.
��������� ���, ���������� ��� ��� ���������� IEEE ��������� � ��������� ������. ��� ��������� ������������ ������, ����� ��������� ��������� �����������.
��������� �����, ���������� ������������ ������ ��� ��������� �����. ��������������: ����������� ���������� �� �������� ������ GNU CC. ������ ������������ ����������� ������������ ������������ C, �� ��� �� ����� ���� ������� ����� � �����-����������. �� ������ �������� ���� ����������� �����������, ����� ���������� ���������� ���������� ������� ��� �����-����������.
�� �������, ��� �������, ������������ �������� � ��������� ������, ������ ��������� �� ����������� ����� 80387, ��������� ���������� � ��������� ������ ����� ����������� ���� ��� ������������� '-msoft-float'.
�� ���������� �������� ���������� ������������ ��� �������� �������� �� �������.
������� ��������� ������� ���������� �������� ����� float � double �� ��������� ���������� ������������, ����, ���� ���������� ������������ ���. ���� ������� � ���, ��� ������������ ������� ������ ����������� ��������� �����������.
����� '-mno-fp-ret-in-387' ���������� ������ ����� ���������� ����� �������� �� ������� ��������� ������������ ����������.
��������� ��������� 387 �� ������������ ���������� sin, cos � sqrt ��� 387. �������� ��� �����, �� ��������� ��������� ���� ����������. ��� ����� ���������� �� ��������� �� FreeBSD. � �������� ����������� 2.6.1, ��� ���������� �� ������������, ���� �� �� �����������, �����, ����� '-ffast-math'.
��������� ���, ����������� �� GNU CC double, long double � long long ���������� �� ������� ���� ���� ��� �� ������� ������ �����. ������������ double ���������� �� ������� ���� ���� ��������� ���, ������� ����������� ������� ������� �� 'Pentium' ��� ������� �������� ���������� ������.
��������������: ���� �� ����������� ����� '-malign-double', ���������, ���������� ���� ������������� ���� ����� ������������� �� ���, ��� � �������������� ������������� ����������� ��������� ���������� ��� 386.
��������� ���, ���� GNU CC ������ �������������������� ��������� ���������� - � bss ��� data. 'msvr3-shlib' ������ ��� ���������� � bss. ��� ����� ����� ����� ������ � System V Release 3.
��������� ���, ���������� �� GNU CC mul � imul, ������� ������ 64-������ ��������� � eax:edx �� 32-������ ��������� ��� ���������� long long ��������� � 32-������� ������� �� ���������.
���������� ������ ��������� ������ �������, � ������� �������, ������� ����� ������������� ����� ���������� ������������ � ������� ���������� 'ret �����', ������� ����������� ��������� ��� ��������. ��� ��������� ���� ���������� � ����� ������, ��������� �� ���� ����������� ��������� ���.
�� ������ �������, ��� ��������� ������� ���������� � ���� ���������� ������ � ������� �������� ������� 'stdcall'. �� ������, �����, �������� ����� '-mrtd', ��������� ������� ������� 'cdecl'. ��. ������ 6.22 [�������� �������].
��������������: ��� ��������� ������ ������������ � ������ ������������ � Unix, ��� ��� �� �� ������ ������������ ��, ���� ��� ����� �������� ���������� ���������������� ������������ Unix.
��, �����, ������ ���������� ��������� ��� ���� �������, ������� ����� ���������� ����� ���������� (������� printf); ����� ��� ������ ���� ������� ����� �������������� �������� ���.
����� ����, ����� ������������ ��� ����� ������������, ���� �� �������� ������� �� ������� ������� ������ ����������. (������, ������ ��������� ��� ����������� ������������.)
��������� �������� ������������� �� ��������� ����� ���������. ������ '��������' ������������ ����� ��� ���� ������������ ��������. ��������������� ������� ��������: a �������� EAX, b �������� EBX, c �������� ECX, d �������� EDX, S �������� ESI, D �������� EDI, B �������� EBP.
��������� ���, ������� ��������� ������������ ��� �������� ����� ����������. �� ���������, �������� ��� �������� ���������� �� ������������, � �������� 3 �������� ����� ���� ������������. �� ������ ��������� ���� ��� ���������� ������� ��������� ������� ������� 'regparm'. ��. ������ 6.22 [�������� �������].
��������������: ���� �� ����������� ��� �����, � '�����' �� ����� ����, �� ������ ������� ��� ������ � ����� � ��� �� ���������, ������� ��� ����������. ��� �������� ��������� ���������� � ������ ��������� ��������.
����������� ����� �� ������� ������� ���� � ����������� '�����' ����. ���� '-malign-loops' �� �������, ���������� �������� 2.
����������� ����������, �� ������� ������ ��������� �� ������� ������� ���� � ����������� '�����' ����. ���� '-malign-jumps' �� �������, ���������� �������� 2 ��� ����������� ��� 386, � 4 - ��� 486.
����������� ������ ������� �� ������� ������� ���� � ����������� '�����' ����. ���� '-malign-functions' �� �������, ���������� �������� 2 ��� ����������� ��� 386, � 4 - ��� 486.
��� ����������������� ����� ��������� ������������ �� ����������, ������������� ��� ��������� ����.
����������� �� ��� ����� ��� �������������, ��� � ������������� �����; ������������� ������ '-ffoo' ����� '-fno-foo'. � ������� ����, ����������� ������ ���� �� ���� ���� - ��, ������� �� �������� ����������. �� ������ �������� ������ �����, ���� ������ 'no-', ���� ������� ���.
���������� "��������" ��������� � ����������� � ������, ����� ��� � �������, � �� �� ���������. ��� ��������� ����� ����������, �� ��� ����� ������������ � ������������� ������� ����� �������, ����������������� GNU CC, � �������, ����������������� ������� �������������.
������ ��������� �������� �������� � ������ ������� �� �������� �������� �����������.
��������� ����������� � ������������� �������� ��, ��� ������ � ������������ ������������� ������ �� ����� �����.
���������� ����������, ��� ��������� � ����������� ������������, ����� ��������. �� ���������. ��� ����� ���������� ��� ����� ��������, ��� '-fpcc-struct-return'.
���� �� �� ���������� �� '-fpcc-struct-return', �� �� ����������������� - '-freg-struct-return', GNU CC ���������� ����������� ��� ������ ����������� ���������. ���� ����������� ��������� �� ����������, GNU CC ���������� '-fpcc-struct-return', ����� ����������, ��� GNU CC �������� �������� ������������. � ���� ������ �� ����� ������� ��������, � �� �������� ����� ����������� ������� ������������ ��������.
�������� ��� ���� ������������ ������ ����� ���������� ������, ������� ����� ��� ������������ ��������� ��������� ��������. � ������, ��� ������������ ����� ������������ ����������� ������ ����, ������� ����� ���������� �����.
���������� ��� �� ������ ��� double, ��� � ��� float.
�������, ����� ������ � ������������� ���������� ���� ������� ���������� ���� ������������ �������, � �� �������. ��� �������� ����� ����� ������ ��� ��������� ������������ ������, ��� ����������� ������ ����������� ����� ����������, �������������� � ����� ���������, � �� ����� ��� ������ ������ ���������� � ����� ����� �� �������.
��������� ���� �������������������� ���������� ���������� � ������ bss ���������� �����, ������ ��������� �� � �������� ����� ������.��� ����� ������ � ���, ��� ���� ���� � �� �� ���������� ��������� (��� extern) � ���� ��������� �������� ����������, �� �������� ������ ��� �� ��������. ������������ ��������, �� ������� ��� ����� ���� �������, �������� �������� ����, ��� ��������� ����� �������� �� ������ ��������, ������� ������ �������� ����� �������.
���������� ��������� '#ident'.
�� ������� ������������ ��������� '.size', ��� ���-������ ���, ��� ����� ������� ��������, ���� ������� ������������ ����������, � ��� ��������� ����������� � ��������, ������ ��������� ���� �� ����� � ������. ��� ����� ������������ ��� ���������� 'crtstuff.c'; ��� �� ������ ������������ ������������ �� ��� ����-������ ���.
�������� �������������� �������������� ���������� � ������������ ���, ����� ������� ��� ����� ��������. ��� ����� ������ ����� ������ ���, ���� ������������� ����� ������ ������������ ������������ ��� (����� ���� ��� ����������� ������ �����������).
������� ��� ������ � ������ ����� ��������� volatile.
������� ��� ������ � ������ �� ������� � ���������� �������� ������ volatile.
��������� ����������-����������� ��� (position-independent code - PIC), ���������� ��� ������������� � ����������� ����������, ���� �������������� ��� ������� ������. ����� ��� ����� ��� ����������� ������ �� ���������� ������� �������� (global offset table - GOT). ���� ������ GOT ��� ���������� ������������ ����� ��������� ����������� ��� ������ ������������ ������, �� ��������� ��������� �� ������ �� �������, ������������, ��� '-fpic' �� ��������; � ���� ������ ���������������� � ������� �� '-fPIC'. (��� ��������� ����������: 16� �� m88k, 8� �� Sparc � 32� �� m68k � RS/6000. 386 �� ����� ������ ������.)
����������-����������� ��� ������� ����������� ���������, �, �������������, �������� ������ �� ��������� �������. ��� 386, GNU CC ������������ PIC ��� System V, �� �� ��� Sun 386i. ��� ������������ ��� IBM RS/6000 ������ ����������-�����������.
��������� GNU �� ��������� ������������ PIC. �� ������ ������, �� ������ ������������ �����-������ ������ ���������, ����� PIC �������. �� �� �������������� ������������, ������� �������� �� GAS, ����� ������������ PIC; ������ ������ ������ �������� ��������, ��� ��������� ������ ������ �����.
���� �������������� ��� ������� ������, ��������� ���������� ����������� ���, ���������� ��� ������������ �������� � �� ������� ������� ����������� �� ������ ���������� ������� ��������. ��� ����� ���� ������� �� m68k, m88k � Sparc.
����������-����������� ��� ������� ����������� ���������, �, �������������, �������� ������ �� ��������� �������.
���������� � ��������� � ������ '�������' ��� � ������������� ���������; ����������� ��� ������� �� ������ ��������� �� ���� (�����, ����� ����, � �������� ��������� �����, ��������� ������ ��� � �����-������ ������ ������������� ����).
'�������' ������ ���� ������ ��������. ����������� ����� ��������� �������� ���������������� � ������������ �������� REGISTER_NAMES � ������������ ����� �������� �����������.
��� ����� �� ����� ������������� �����, ������ ��� ��� ���������� ����� �� ���� �����������.
���������� � ��������� � ������ '�������' ��� � ���������, ���������� ��� �������������, ������� ���������� �������� �������. �� ����� ���������� ��� ��������� ���������� ��� ��� ����������, ������� �� ���������� ����� �������. �������, ����������������� � ���� ������, �� ����� ��������� � ��������������� ������� '�������'.
'�������' ������ ���� ������ ��������. ����������� ����� ��������� �������� ���������������� � ������������ �������� REGISTER_NAMES � ������������ ����� �������� �����������.
��� ����� �� ����� ������������� �����, ������ ��� ��� ���������� ����� �� ���� �����������.
���������� � ��������� � ������ '�������' ��� � ���������, ���������� ��� �������������, ������� ����������� ���������. �� ����� ���������� ���� ��� ��������� ���������� ��� ������� ����������, ������� ���������� ����� �������. �������, ����������������� � ���� ������, ����� ��������� � ��������������� ������� '�������', ���� ��� ��� ����������.
������������� ����� ����� ��� ��������, ������� ����� ������������� ���� � �������� ������ ���������� �����, ��� ��������� ����� ��� ��������� ������, ��������� �������������� ���������.
��������� �������� ����� ��������� �� ������������� ����� ����� ��� ���������, � ������� ����� ������������ �������� �������.
��� ����� �� ����� ������������� �����, ������ ��� ��� ���������� ����� �� ���� �����������.
����������� ��� ����� �������� ����� ��� �������. ������, �� �������� �� ������������ ��� �����, ��������� ��� ������ ��� �� �����������, � �������� ������ �������� ����������������� ��������� �����������.
���� ������ ��������� ��������� ���������� ���������, ������� ����������� �� ��� �������� GNU CC. ��� �������� �������� ���������� � �������� ��� ������������� ��� ������ ��������� ����� ������.
�������, ��� �� ����� ������ ������� ����� ��� ������, ��������� �����, ����� ��� '-B', '-I' � '-L' (��. ������ [����� ����������]). ��� ����� ��������� ����� �������, ���������� � ������� ���������� ��- �������, �������, � ���� �������, ����� ��������� ����� �������, ���- ������� ������������� GNU CC. ��. ������ 17.1 [����������� ���������].
���� TMPDIR �����������, ��� ��������� ����������, ������������ ��� ��������� ������. GNU CC ���������� ��������� ����� ����� ������� ����� ����� ������ ����������, ������� ������ �������������� � �������� ����� ��� ��������� ������: ��������, ����� �������������, ������� �������� ������ ��� ���������� �����������.
���� GCC_EXEC_PREFIX �����������, ��� ��������� �������, ������������ � ������ ��������, ����������� ������������. ����� ����� �� �����������, ����� ���� ������� ������������ � ������ ���������, �� �� ������ ������� �������, ������� ������������ ����� ������.
���� GNU CC �� ����� ����� ���������, ��������� ��������� �������, �� �������� �������� � ������� ����� ��� ��������.
��������� �� ��������� ��� GCC_EXEC_PREFIX �������� '�������/lib/gcc-lib/', ��� '�������' - �������� prefix, ����� �� ��������� 'configure'.
������ ��������, ��������� � ������� '-B', ����� ��������� ����� ���� ���������.
���� ������� ����� ������������ ��� ���������� ������, ����� ��� 'crt0.o', ������� ������������ ��� ��������.
����� ���� ���� ������� ������������ ��������� �������� ��� ���������� ���������� ��� ������ ������������ ������. ��� ������ �� ����������� ����������, ��� ��� ������ ���������� � '/usr/local/lib/gcc-lib' (����� �����, � �������� GCC_INCLUDE_DIR), GNU CC �������� �������� ��� ������ �� ��������� �������, ����� �������� ��� �������������� ����������. ����� �������, � '-Bfoo/' GNU CC ����� ������ 'foo/bar', ���� ������ �� ����� �� 'usr/local/lib/bar'. ��� �������������� ���������� ��������������� ������, ����� ���� ����������� ����������.
��������� COMPILER_PATH �������� ������ ����������, ����������� �����������, �� ������ ������ � PATH. GNU CC ������������� ����������, ��������� ����� �������, ��� ������ ��������, ���� �� �� ����� ����� ��������� ��������� GCC_EXEC_PREFIX.
��������� LIBRARY_PATH �������� ������ ����������, ����������� �����������, �� ������ ������ � PATH. ����� GNU CC ��������������� ��� ������ ����������, �� ������������� ����������, ��������� ����� �������, ��� ������ ����������� ������ �������, ���� �� �� ����� ����� �� ��������� GCC_EXEC_PREFIX. �������� ��� ������������� GNU CC ����� ���������� ��� ���������� ��� ������ ������� ��������� ��� ����� '-l' (�� ����������, ��������� � '-L', ���� �������).
��� ���������� ��������� ��������� � ���������� ������. ��������� ������ ���������� �������� ������ ����������, ����������� �����������, �� ������ ������ � PATH. ����� GNU CC ���� ������������ �����, �� ������������� ����������, ������������� � ���������� ��� �����, ������� �� �����������, ����� ���������� ��������� � ������� '-I', �� �� ����������� ���������� ������������ ������.
���� ��� ���������� �����������, �� �������� ��������� ��� �������� ����������� ��� Make, ���������� �� ������������ ������, ������������ ������������. ���� ����� �� ������ ����� �� ����� ����� '-M' (��. ������ [����� �������������]), �� �� ���� � ��������� ���� � �������� ����������� � ������� ����������� ����������.
�������� DEPENDENCIES_OUTPUT ����� ��������� ������ ��� �����, � ���� ������ Make-������� ������� � ���� ����, � ������� ��� ����������� �� ����� ��������� �����. ��� ��, �������� ����� ����� ����� '���� ����', � ���� ������ ������� ������� � ���� '����' � �������������� '����' � �������� �������� �����.
��������� protoize �������� �������������� ������ GNU C. �� ������ ������������ ��, ����� �������� ��������� � ���������, �����������, ����� �������, ��������� � ANSI C � ����� ���������. ������������� ��������� unprotioze ������ ��������: ��� ������� ���� ���������� �� ���� ����������, ������� ��� �������.
����� �� ��������� ��� ���������, �� ������ ������� ����� �������� ������ � �������� ���������� ��������� ������. ��������� ��������� �������� ������ � ����, ��� ����������� ��� �����, ����� ������, ����� ������� � ��� ����������. ����������, ��������� � ����� foo, ����������� � ����� � ������ 'foo.X'.
����� ������������ ���� �������� ��������������. ��������� ����� ��� ����� ���� �������������; ����� �����, ������� ��� �������� (�������� ��� ������ ������������) ����� ����� ���� �������������.
�� �� ��� ���������� ����� �������������. �� ���������, protoize � unprotoize ����������� ������ �������� ����� � ����� ��������� � ������� ��������. �� ������ ������� �������������� ��������, ����� � ������� ������ �����������������, � ������� ����� `-d����������'. �� ������ ����� ������� ��������� ����������� ����� � ������� ����� '-x����'. ���� �������������, ���� �� ��������, ��� ��� �������� ������������� ������ �� ��������� ���� ���������, � ��� ��� � �������� �� �����������.
�������� �������������� protoize ������� � ������������� ����������� �������� ������� � ���������� �������, ����� ��������� ���� ����������. �� ���������������� ������ ���������� � �������� ������� � ���������� ������ ����������.
protoize �� ������ ��������� ���������� ���������� � ������ ��������� �����, ����� �� ���������� ��� ����� �������, ������� ������������ �������� �������. ��� ��� ����� ��������� ���������� ���������� � ������� �������� �������� � ������, ��� ���������� ������������� �������.
�������� �������������� unprotoize ������� � ������������� ����������� ���������� ������� ���, ����� ������� ���� ����������, � � ���������� �������� ������� � ����� ������� pre-ANSI �����.
��� ��������� �������������� �������� �������������� ��� ������ ���������� ��� �������� �������, ������� ��� �� ����� �������������. �� ������ �������� ��� �������������� � ������� `-q'.
����� protoize ��� unprotoize �������� �������������� �������� ����. �������������� ���� ����������������� � �����, ��������������� �� `.save'. ���� `.save' ���� ��� ����������, �������� ���� ������ �������������.
� protoize, � unprotoize ��������� ��� GNU CC, ����� ������������� ��������� � �������� ���������� � ��������, ������� ��� ����������. ��� ���, �� ���� �� ���� �������� �� ����� �������� �� ���������� GNU CC.
���� ����������� ������� �����, ������� �� ������ ������������ � protoize � unprotoize. ������ ����� �������� � ������ �����������, ���� �� ������� �����.
���� ���� `SYSCALLS.c.X' � '����������', ������ �������� �������� (������ `/usr/local/lib'). ���� ���� �������� ���������� ���������� � ���������� ����������� ��������� �������. ��� ����� ��������� ������ � protoize.
���������� '�����-����������' � �������� ����� ��� ������� gcc ��� ���������� `.X' ������. ����������� ����� `-aux-info' ������ ���������� � ����������, ������ gcc �������� `.X' ����.
�������� ��������, ��� ����� ���������� ����� ���������� ��� ��������� �������� protoize ��� unprotoize. ���� �� ������ ������� ��������� ����� gcc, �� ������ ��������� ���� ����� ����� ���������� � �������, ����� ������� �� ����� ������ ��� shell'�.
���� ������������ ��������� gcc, ������� �� �� ������ ������������, ������ ��� ��� ���������� ������������ ��� ������. ��� �������� `-g', `-O', `-c', `-S' � `-o'. ���� �� ��������� �� � '�����-����������', ��� ������������.
��������������� ����� ���, ����� ��� ������������� �� `.C' ������ `.c'. ��� ������, ���� �� ������������ C ��������� � C++. ��� ����� ��������� ������ � protoize.
��������� ����� ���������� ����������. ��� ������ ��������� ����� ���������� � ������ ������� ��������� ����� ��� ������ �������, ������� ���������� � ���, � �� ���� ���������. ��� ���������� ������������ ������� �������� �������, ������� �������� ����� � ������������� �������. ��� ����� ��������� ������ � protoize.
����������� ���������� ���������� � ������ ����� � ������� ������ '������'. ��� ����� ��������� ������ � unprotoize.
unprotoize ��������������� ��������-�������� ������� � �������� ������� ������� �����, ��� ��������� ��������� ����� �������� ���������� � ��������� `{'. �� ���������, unprotoize ���������� ���� �������� � �������� ������������. ���� �� ������ ������ ����� ����������� ������ � ����� ��������, ����������� `-i " "'.
��������� `.X' �����. ������, ��� ��������� ����� ���������� ��������������.
��������� ����� ��������� ����������. protoize � ������ `-l' ��������� ����������-��������� ��� ������ ������� � ������ �����, ������� �������� ������� ��� ����������. ��� ����� ��������� ������ � protoize.
�� ������ ������� �������� ���������. ���� ����� ������ �������� ���������� � ���������������, ������� ���� �� ��������� ��� `-n'.
�� ������ `.save' ������. �������������� ����� ������ ���������. ����������� ��� ����� � �������������.
���������� ��������� '���������' ��� ����������. ���������, ������������ ��� `gcc'.
�������� �����. ����������� �������������� �����������.
�������� ����� ������, ����� ��� �� ��� `-v' ��� gcc.
gcc -Dfoo=bar file1.c -aux-info
protoize * .c
�� ������ �������� ����������� ����� ������ � ���������� �
������� protoize, ���� ���� �� `.X' ����� ��� ����������, ������ ���
����� ��� �� ����� �����������������.
��. ������ [��������������� Protoize], ��� ������� ���������� � ���, ��� ������� ������������ prtoize.