1: / * usehello.c * /
2:
3: #include "libhello.h"
4:
5: int main(void) {
6: print_hello();
7: return 0;
8: }
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ libhello.h ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π±Π΅Π· Π΅Π΅ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠ°Π³ΠΈ.
1. Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π°ΠΆΠΊΠ° -fPIC ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
gcc -fPIC -Wall -g -Ρ libhello.c
2. Π‘ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠΉΡΠ΅ libhello Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π‘ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π»ΡΡΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ :
gcc -g -shared -Wl, -soname,libhello.so.0 -ΠΎ libhello.so.0.0 libhello.ΠΎ -lc
3. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΡΠ»ΠΊΡ ΠΈΠ· soname Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ:
ln -sf libhello.so.0.0 libhello.so.0
4. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΡΠ»ΠΊΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ -lhello:
ln -sf libhello.so.0 libhello.so
5. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°ΠΆΠΊΠ° -L. ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ -lhello ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, Ρ ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡ:
gcc -Wall -g -Ρ usehello.c -ΠΎ usehello.o
gcc -g -ΠΎ usehello usehello.o -L. -lhello
(Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΡΠ΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Π΅ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.)
6. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ usehello:
LD_LIBRARY_PATH=$(pwd) ./usehello
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ LD_LIBRARY_PATH ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅). ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ libhello.so.* Π² /usr/lib ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ LD_LIBRARY_PATH.
8.6. Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ
Π‘Π°ΠΌΡΠΉ Π»Π΅Π³ΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΎΠ½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π‘ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ , Π΅ΡΠ»ΠΈ Π΅ΠΌΡ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ ΡΡΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΠ²Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡΠΈΠΉ ΠΈ Π²ΡΠ³ΡΡΠΆΠ°ΡΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² Π³Π»Π°Π²Π΅ 27. ΠΠ²Π° Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠΏΠΈΡΠ°Π½Ρ Π½ΠΈΠΆΠ΅.
8.6.1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΊΡΡΠ΅ (/etc/ld.so.cache, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ ldconfig) Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ , Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π² /etc/ld.so.conf. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ LD_LIBRARY_PATH, ΠΏΠΎΠΈΡΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ , ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π² Π½Π΅ΠΉ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ LD_LIBRARY_PATH. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Netscape, ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 5.2.18 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘, Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π‘ 5.3.12. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ malloc(). ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠΏΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ 5.2.18 Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, /usr/local/netscape/lib/, ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡ ΡΡΠ΄Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π±ΡΠ°ΡΠ·Π΅ΡΠ° Netscape ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡ /usr/local/bin/netscape ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/netscape/lib:$LD_LIBRARY_PATH
exec /usr/local/netscape/lib/netscape $*
8.6.2. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΌΠ΅Π½Ρ ΡΠ΅Π»ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΌΠ°ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΏΠΈΡΠΊΠ° Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ zlibc. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠΆΠ°ΡΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° zlibc ΠΈΡΠ΅Ρ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», ΡΠ°ΠΊ ΠΈ gzip-Π²Π΅ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, zlibc Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ, Π° Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ gzip-Π²Π΅ΡΡΠΈΡ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ gzip-ΡΠ°ΠΉΠ» Π±Π΅Π·ΠΎ Π²ΡΡΠΊΠΎΠ³ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅ΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, zlibc ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π½Π° Π΄ΠΈΡΠΊΠ΅, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π·Π° ΡΡΠ΅Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ»ΡΡΠ°Π΅Π²:
LD_PRELOAD=/lib/libsomething.o exec /bin/someprogram $*
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈ Ρ zlibc, ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ°ΠΉΠ» /etc/ld.so.preload ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ΅. ΠΠ»Ρ ΡΠ»ΡΡΠ°Ρ zlibc ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
/lib/uncompress.ΠΎ
ΠΠ»Π°Π²Π° 9
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Linux
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ»ΡΠΆΠ±, Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ΄ΡΠ° ΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
9.1. ΠΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°
ΠΠ°ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 10, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΌΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ°ΡΡ "ΠΈΠΌΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅", ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘. (ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠ΅Π½Π½ΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ; Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ.)
EDITOR ΠΈΠ»ΠΈ VISUAL ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ EDITOR ΠΈΠ»ΠΈ VISUAL Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ EDITOR ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅ΡΠ°ΠΉΠΏΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, a VISUAL β Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. LD_LIBRARY_PATH ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡΠΌΠΈ ΠΏΡΡΠΈ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ /etc/ld.so.conf Π΅ΡΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π²ΡΡΠ΄ Π»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ; ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ld.so. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 8, LD_LIBRARY_PATH ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. LD_PRELOAD ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ . LD_PRELOAD, ΠΊΠ°ΠΊ ΠΈ LD_LIBRARY_PATH, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π² Π³Π»Π°Π²Π΅ 8. PATH ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡΠΌΠΈ ΠΏΡΡΡ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ, Π³Π΄Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ°. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² Linux (ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ Unix), Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π½Π΅ ΠΏΡΠΈΠ½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠΈΡΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ . (ΡΠΎΡΠΊΠ°). ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² Π³Π»Π°Π²Π΅ 10. TERM ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ; ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΈΡΠ°ΠΉΡΠ΅ Π² Π³Π»Π°Π²Π°Ρ 24 ΠΈ 21.9.2. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ
Π ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΎΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π‘. Π ΡΡΠΎ Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ; ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ, Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Linux ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π° (ΡΡΠΈΠ»ΠΈΡΡ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅), Π²ΡΠ΅ ΡΡΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ²: ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ°.
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (user mode). ΠΡΠ°ΠΉΠ²Π΅ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ° (kernel mode). Π ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΠΎΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ΄, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΄ΡΠ°, ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠ°Π·ΡΡΡΠ°ΡΡ Π²ΡΠ΅, ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ.