|
|
| ��� �������� �������� �� ��������� ������: English Castellano ChineseGB Deutsch Francais Italiano Portugues Russian Turkce Arabic |
����� Lorne Bailey <sherm_pbody(at)yahoo.com> �� ������: ���� ����� � ������ � �������� ������������� �� �����������, ��������������� �� �����-������ ��� ��� ������ Oracle. ������ �����-�� ����� - ��������������� ������������� � ����� *nix - ���� ��������� ������� '��� DLL'. ������ �� �������� ��� ����� ������ �������� �� �����������. ������� �� �������: ������� ������� <forlelik(at)yahoo.com> ����������: |
������:
��� ������ ������������, ��� �� ������� � �������� ����� ��, � ����� ����������� ��� � �������������� gcc � �������� �����������. �� ����� ���� ����������, ��� �� ������� ������� ���������� �� ��������� ������ ��� �������� ���� �� ��. ����� �� ������� ������� ����� ����, ��� �� �� ����� ���� ����������, � ����, ��� �� ������ �������������� ���������� ����� ��������. ����� �� ����� ������ ���������� ������������� ���������.
������ �� �� ����������� ���������� ���������� ������������ �����������
������������ � ��������� ������, ����������� � ����-���� �������������?
������ �� ������ �����, ��� ���������� � ����� ����������� �����? ����� �����
�������������� ������ ���� ��� ������ ������. Ken Thompson, ��� ����� ��
���������� ������� ���� ������, ������� ����������, ������� �������� ������
��� � ��������� 'login' � ���������� ������, ����� ����������, ����������� ���,
������������ ��� ����. �������� �������� ���� ������ �������� �����: . � �������, � ��� ���� gcc.
��� ������ �� ���������� configure; make; make install
, gcc ��������� �� ������ ����� ������� ������. ��� ��� ��������� gcc
�������� �� ����? �� ������ ������ ��������� ����, �� ������� ���� �������,
������� ��� ����������� ��� ������������ ���������������� �����������.
��������� �� �������� � ������� �����, ��� ����������� ��������� ��������
���������� ��� ����, ����� �����, ��� ����� ������� ��� �������� ������������
����� � � ����� �������. �� ������� ����� ����� ����, ��� �������������
��������� �� ��, � ����� �����, ������� ���������� gcc ������ ��, ��� ���
�����. ������� (� ������������ �� ������������� ��������) �������������(Pre-compile) (gcc -E), ����������(Compile) (gcc), ���������������(Assembly) (as), and ����������(Link) (ld).
��-������,������, �� ������ �����, ��� ������� ���������� � ������ ���. ��� ������������� ������. �� ������ � ������ ������������ ������ ��������� �� ��. (������� ������ ���� ��������).
#include <stdio.h> int main()
{ printf("Hello World!\n"); }
��������� ���� ���� � ������ game.c. �� ������ �������������� ���
�� ��������� ������, ��������:
gcc game.c�� ���������, ���������� �� ������� ����������� ���� � ���������
a.out. �� ������ ��������� ���, ������:
a.out Hello World������, ����� �� ������������ ���������, �����
a.out �����
�������� ���������� ���������. �� �� ������ �������, ����� �� ��������
������� ������� a.out. �� ����� ������ ��� ��������, ������� gcc,
��� �� ����� ������� ����������� ����, � ������� ����� -o . ��
����� ������� ��� ��������� game, ���� �� ����� �� ������� ��
��� ������, ��������� �� �� ����� ����������� �� �����, ������� ���� Java.
gcc -o game game.c
game Hello World
� ���� ����� �� ��� ����� ������ �� ��������� �������� ���������. ���� �� �������, ��� ��� �����, �� ������ ������� �� �������� ����, ��� � ��� ���� ���������, ������� ������������� � ��������. ��� ������ �� ����-������ ������ ��������� ��������� ����������������, �� ������� ��������� � ���, ��� ��������� �������� ���������������. ��������, ��� ������ ���������� ����������� ����� �������� 1,000 ����� ��������� ����, � ����� ����� �� ���������. � �����, ��� ����� ����� �� ������. �� �������� ��������� ���������� ���������, �� ��������� �� � ����� ����������� �� ��������. ��� ��������� ���������� ������, ������� ��� ����� ����� ��������� �� ���� ���. ���� � ����, �� ����� ������, ��� �� ������� � ��� �� ��������, ��� ��� �� ������, �� ��� ���������������. ��� ������� ��� �� �������� ����-��, ���, �� ������ ������ ������ ��������, � �������� ���� �������������, �� ������� �� ������ ����������� ������. ������� - ��, ��� ��������� �������������, ����� �� ��������, ��� ��� �����.
��������� ��� - �������� ������������� ����� ��� ����� ����. ������������ ���� �������� � ����� ����� ���� ������ � �������� �������. ��� ������������ ������������� ����������� �������� ������, ��� ��� ������ ����� ����� ��������� ������������ ���-���� ���������.
#ifndef DECK_H #define DECK_H
#define DECKSIZE 52
typedef struct deck_t
{
int card[DECKSIZE];
/* number of cards used */
int dealt;
}deck_t;
#endif /* DECK_H */
��������� ���� ���� ��� deck.h. ��� ��� ������������� ������
����� .c, �� ������ �������� ��� game.c. � ������ 2 ����� game.c,
�������� #include "deck.h". � ������ 5, �������� deck_t
deck; ����� ���������, ��� �� ������ �� �������, �������������
��� �����.
gcc -o game game.c
��� ������ - ��� �������. ���� �� �� �������������, ����������� � ���, ���� �� �� ����������.
������ ���������� �����, ������ ���� deck_t? ������ ��� �� �����
�������������� �� ������������� �������� ���� "deck.h" � ���� "game.c".
��������� ������������� � �������� ���� ������������ ��������� "#". �� ������
������� ������������ ����� ���������� gcc � ������� ����� -E.
gcc -E -o game_precompile.txt game.c wc -l game_precompile.txt 3199 game_precompile.txt����� 3,200 ����� ������! ����������� �� ��� ���������� �� ������������� �����
stdio.h, �� ���� �� ����������
�� ���, �� ������� ����� � ���� ��������. ���� �� �� ������ ��� ���������
����� ����� ���� -o, �� ����� ������� �� �������. �������������
���� ���� ������� ��������, �������� ��� ������� ����. -E ����� �� ����, � ������ ����� ���������� ��� ����� �
�����������.
� �������� �������������� ����, gcc ����������� ��� ��� � ���� ����������. ����� ������� ���, �� ������ �����������, ��� �� ����� � ����, �������� ��� ���. ���� �� ������� �������������� ������, �� ������� ��� �� ���� � ���������� ���������. ���� ������ �������� ������, ��� ��� ������������ ��� ����� ��������. ������ ��� gcc �������� ��� ����� ����� ������.
as ��������� ��� �� ���������� � ��������� ���. ��������� ���
�� ����� ������� �������� � ����������, �� �� ����� ������ � �����. �����
����������� -c ���������� ���� .c � ��������� ���� � �����������
.o. ���� �� ���������
gcc -c game.c, �� ������������� ������� ���� � ������ game.o.����� �� ����������� �� ������ �����. �� ����� ����� ����� ���� .c � ������� �� ���� ��������� ����. ��� �� ������ ����, �� ����� ������������� ��� ��������� ����� � ����������� ���� �� ����� ����������. ������� �������� � ������ �������. ��������� �� ������������� ��������� ���� � ���������� ������ ���� ���
deck_t, ��� ����� ��������
�������, ������� ������ ������. ��� ������� �������� ��������� �� ��� ������
� ��������� ��� ���������� ���������� ��� ����. ��� ������ �� �������, �������
��� ��������������, � ������� ������� 'drawn'. ���� ������ �� DECKSIZE
��������� ������������ ���������� �������� �����.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "deck.h"
static time_t seed = 0;
void shuffle(deck_t *pdeck)
{
/* Keeps track of what numbers have been used */
int drawn[DECKSIZE] = {0};
int i;
/* One time initialization of rand */
if(0 == seed)
{
seed = time(NULL);
srand(seed);
}
for(i = 0; i < DECKSIZE; i++)
{
int value = -1;
do
{
value = rand() % DECKSIZE;
}
while(drawn[value] != 0);
/* mark value as used */
drawn[value] = 1;
/* debug statement */
printf("%i\n", value);
pdeck->card[i] = value;
}
pdeck->dealt = 0;
return;
}
��������� ���� ���� � ������ shuffle.c.
�� ��������� ���������� ���� � ���� ���, ����� ��� ������� �� �������
������������ ������ ����. ��� �� ������� ����� ��������� ����������������, ��
������ �����, ����� �� ������, ��� ����������. ��������� �� ������
�������� ���� ����, � ��� ��� ������� ������� ���������, ��� ���� �������
������ ��, ��� �� �����. � ������� printf, �� ����� ����� �������, ���
���������� ����� ������, ��� ���, ����� �� �������� � ����� ��������� ����, ��
����� �����, ��� ������ ������ ������������. ����� ����, ��� �� ��������,
��� ��� �������� ���������, �� ������ ��� ������� �� ������ ����. ���
������� ������� �������� �������� ������, �� ��� ������ ��� � ��������� �����.
�� ������� ����� ������� ��������� �����.
shuffle.c �� ��������
������� 'main' � ������� �� ����� ���� ��������������� ����������� ������. ��
������ ������������� ��� � ������ ����������, ������� �������� 'main' �
�������� ������� 'shuffle'. ��������� �������
gcc -c shuffle.c� ���������, ��� ��� ������� ����� ���� � ������
shuffle.o. �������������� ���� game.c, � � ������ 7,
����� �������� ���������� deck_t deck, �������� ������ shuffle(&deck);������, ���� �� ��������� ������� ����������� ���� �����, ��� � ������, �� ������� ��������� �� ������
gcc -o game game.c /tmp/ccmiHnJX.o: In function `main': /tmp/ccmiHnJX.o(.text+0xf): undefined reference to `shuffle' collect2: ld returned 1 exit status���������� ���� ��������, ��������� ��������� ��� ����������. ���� ���������� ���������� � �������, ��������� �� �� ������� �����������, ��� ��������� ������� 'shuffle'. ��� ����� link � ��� ��� ������� �����������, ��� ����� ��� �������?
�����������, ld, ����� ��������� ���, ��������� �����
as � ���������� ��� � ����������� ��������
gcc -o game game.o shuffle.o��� ������������ ��� ������� ������ � ������� ����������� ����
game.
����������� ������� ������� shuffle � ��������� ���� shuffle.o �
�������� �� � ����������� ����. ��������� �������� ��������� ������ � ���,
��� ���� ��� ����� ������������ ��� ������� �����, �� ���, ��� ���
����������� - ��� ���������� ���� "deck.h" � �������
��������� ���� shuffle.o � ����� ����������� ������.
��������� ������������� ����, ��� ���� ������, ������������� ����. ����
�� �� ������ ������� printf, ������� �� �������� ���� � ����������
�����������, ����������� ����� �� ����������� � �����, ������� �� �������� �
������� #include <stdlib.h> � ������ � ��������� �����,
���������� � ���������� �� (/lib/libc.so.6). ���� ������ �� �����
������������ ��� ������, ���� ��������� ��� ������� �������� ��������� �
��������� � ������� ����� �������. ��� �������� ��������, ������
������������ ����� ������ �������� ������ ����������� ������ � �������, � ��
���� �������. ������ �� �������� ��������� ����� ��� ���������� ���
������������, ����� ��������� �� � ����������� ����. � ����� ����� �����
���������� ��������, ��������� �� �� ��������� ����������� ������� � ���
������������ ����. ��� �� ����� �������, ����� ���������, ��� ��� �������
������?
����� -Wall
���������� ��� ���� �������������� �������������� �����, ����� ������ ���
��������������, ��� ��� ��� ���������� � ����������� �����������. ����� ��
���������� ��� ����� � ����������� ��� ���, �� ����� ���-�� �����:
game.c:9: warning: implicit declaration of function `shuffle'��� �������� ���, ��� � ��� ���� ��� ������� ������. ��� ����� ��������� � ������������ ���� ������, � ������� �� ������� ����������� ��� � ����� �������
shuffle, ����� �� ��� ��������� ���, ��� ��� �����. ��� ������,
��� �����������, �� ��������� ����������� �� ���������� � ��������� ���
������������ ���� ������� ����� ������� ���������� ������ ������������� �����
� �������������� ������ ���������� ����. �� ������ ��������� ���� ������ �
���� deck.h. void shuffle(deck_t *pdeck);��� ������� ��� �� ���������������� ���������.
��� ����� ����� ������ ����������� �������� ����������� -O#
(��������, -O2).
��� �������� �����������, ����� ������� ����������� ��� �����. � �����������
������ ����� "��������", ����� ������� ��� ��� ������������� ����-����
�������. ��� ��������� ��������, ��� ����, �� ������ �� �������� �������, ��
��� ������� �������� ����� �������� �������� ���������. �� ������� ��� �����
�����, ��� ��� �� ������ �����, ��� ��� ��������.
��� ��� ���� ��������, ��, ��� ��� ��� �������������, ����� �� ��������, ��� �� �������� ���, ��� �� ����� �����. �� ������ ���������, ��� ��� ����� ������������ ������ ���� ���, ��������
game | sort - n | less� ����������, ��� ������ �� �������. ��� ��� ����� �������, ���� ����� ��������� ��������? ��� �� ����� ���������� ��� ������ � ����� ������? �� ������ ��������� ��� ��� � ������� ���������. ����������� ������������� ���������� ������������ �������� - gdb. ���� ����� ��������� ������ ��������� ���, ��� � ����, KDE ���������� ����� ������� ���������� KDbg. ���������� � ������ ����������, � ��� ����� �������. ��� ������� �������, �� ��������� File->Executable, � ����� �������� ���� ���������
game. ����� �� ��������� F5 ��� ��������� Execution->Run ��
����, �� ������ ������� ����� � ��������� ����. ��� ����������? �� ������ ��
����� � ����. �� ����������, KDbg �� ��������. �������� ������� � ���, ��� ��
�� ��������� � ����������� ���� ���������� ����������, ��� ��� KDbg
�� ����� ������� ���, ��� ���������� ������. ���� ����������� -g
�������� ����������� ���������� � ��������� �����. �� ������ �������������
��������� �����(���������� .o) � ���� ������, ��� ��� ������� ������ �����
gcc -g -c shuffle.c game.c gcc -g -o game game.o shuffle.o��� �������� � ����������� ���� �����, ������� ��������� gdb � KDbg ��������, ��� �� ����������. ������� �������� ������ �������, � ����� ������� ��������� ���� �����, ����� ��������� �������� � ����������. ��������, ������� �������� �������� ������������, �������� ����������� ��������� "����� ��������" 'Breakpoint' � �������� ����. ���������� ��������� �� ������ �������� ������ ������ �� ������ � ������� �������
shuffle. �� ���� ������
������ ��������� ��������� ������� ������. ������, ����� �� ������� F5,
��������� ��������� ���������� �� ���� ������. ������� F8, ����� ����� �
������� shuffle. ���, ������ �� ������� �� ��� �� shuffle.c! ��
����� �������������� ���������� ��� �� ����� � ������, ��� � ����������������
����������. ���� �� �������� ������� �� ��������� ����������, �� �������, ���
� ��� ��������. �������. ��� ������� �����, ��� ��������� � printf,
�� ��� ��?
��� ������ ������������ ������ ��� �� ���������� � ������� �������� ��. ��
�������� ����, ������� ��������� ���������� � �����, ������� ��� �����
�������� ��� �� ����������. �� ��������� ���������� ����������� ��������� �
��������� ��������� � ���������. ��������� ����� �����, ����� �������������
������, ��� �� �������, �� � �������, ��� ��� ��������, ����� �� ������ � ���
����. �� ������ ����� ������ ���������� � ��������� man �
info ��� gcc, as �
ld.
��������������� ��������� ���� ������ ��� ����� �����. ��� ��������, �� ������ ����� ����� ������ ��������� ��������� ���� �� ���� ������ � �������� ���� "� ����". ��������� �����, ����� �������, ��� ������������ ����������. ������� ����� ������ � ��������� � ����������� �����������, ��� KDbg. ���� �� ����� �������� ������� ����������������, ��� ����� �������, ������ ��� �� ������� ���. �������, ��������� ������ ���������� ����������!
����� ��������� ��������� ����, ������� ����� ��� ������������ ��� �������� ������ ����.
|
|
Webpages maintained by the LinuxFocus Editor team
© Lorne Bailey, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2002-02-26, generated by lfparser version 2.19