Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 143

Автор Π­Ρ€ΠΈΠΊ Π Π΅ΠΉΠΌΠΎΠ½Π΄

Π£Ρ€ΠΎΠ²Π½ΠΈ пСрСносимости Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ прилоТСния. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π΅Π΄ΠΊΠΎ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных систСмных Π²Ρ‹Π·ΠΎΠ²Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ mmap(2) ΠΈΠ»ΠΈ stat(2), Π° программисты часто ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ слоТныС интСрфСйсы Π½Π΅Π²Π΅Ρ€Π½ΠΎ. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ пСрСносимости с абстрактными интСрфСйсами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, функция с ΠΈΠΌΠ΅Π½Π΅ΠΌ __file_exists вмСсто Π²Ρ‹Π·ΠΎΠ²Π° stat(2)) позволяСт ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· систСмы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, упрощая ΠΊΠΎΠ΄ прилоТСния.

РСкомСндуСтся всСгда ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ пСрСносимости Π½Π° основС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Π½Π΅ Π½Π° основС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ пСрСносимости для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ приводят ΠΊ многочислСнным ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ обновлСния ΠΈ обслуТивания. "ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°" всСгда выбираСтся Π½Π° основС ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: компилятор ΠΈ вСрсия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ/ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠ°ΠΊ ΠΊΠΎΠ³Π΄Π° Linux-поставщики Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π‘ нСзависимо ΠΎΡ‚ вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ случаС с M-поставщиками, N-компиляторами ΠΈ O-вСрсиями ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, количСство ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ быстро ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ досягаСмости Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ…. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΡ€ΠΈ использовании стандартов языков ΠΈ систСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ANSI ΠΈ POSIX 1003.1, Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ.

Π’Ρ‹Π±ΠΎΡ€ уровня пСрСносимости ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΏΠΎ строкам ΠΊΠΎΠ΄Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. НСт Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… строк ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСнСсти ΠΊΠΎΠ΄ пСрСносимости для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΠ³Π΄Π° рСализация Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отличаСтся (распрСдСлСниС ΠΎΠ±Ρ‰Π΅ΠΉ памяти Π² Unix ΠΈ Windows), ΠΈ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ΄ пСрСносимости Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΠ³Π΄Π° различия ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² зависимости ΠΎΡ‚ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gettimeofday, clock_gettime, ftime ΠΈΠ»ΠΈ time для опрСдСлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток).

Π—Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ уровня пСрСносимости Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #ifdef ΠΈ #if ΡΠ²Π»ΡΡŽΡ‚ΡΡ послСдним срСдством, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ вообраТСния, Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎΠΉ "ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ" ΠΈΠ»ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ мусора. Π˜Ρ… использованиС Π² сСрСдинС ΠΊΠΎΠ΄Π° β€” бСдствиС. ΠžΠ±Ρ€Π°Π·Ρ†ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” /usr/include/stdio.h ΠΈΠ· GNU.

Π”ΡƒΠ³ ΠœΠ°ΠΊΠΈΠ»Ρ€ΠΎΠΉ.

ИспользованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² #ifdef ΠΈ #if допустимо (Ссли Ρ…ΠΎΡ€ΠΎΡˆΠΎ контролируСтся) Π²Π½ΡƒΡ‚Ρ€ΠΈ уровня пСрСносимости. Π—Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΏΠΎΡ€Π½ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π² обусловлСнныС #includes, исходя ΠΈΠ· символов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Никогда Π½Π΅ слСдуСт Π²Ρ‚ΠΎΡ€Π³Π°Ρ‚ΡŒΡΡ Π² пространство ΠΈΠΌΠ΅Π½ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ части систСмы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ошибок ΠΈ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΌ Π³Π΄Π΅ пространство ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ совмСстно, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒ.

Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ стандарт кодирования. Π‘ΠΏΠΎΡ€Ρ‹ Π²ΠΎΠΊΡ€ΡƒΠ³ Π²Ρ‹Π±ΠΎΡ€Π° стандарта ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ β€” нСзависимо ΠΎΡ‚ этого ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, созданноС с использованиСм Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стандартов кодирования, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ. БСзТалостно ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π² дСйствиС ΠΈΠ·Π±Ρ€Π°Π½Π½Ρ‹ΠΉ стандарт кодирования, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ чистота ΠΊΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ стандарта кодирования второстСпСнны.

19.2.4. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° создания дистрибутивов

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ дистрибутив, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚, восстанавливаСт ΠΈ распаковываСт Π΅Π³ΠΎ.

19.2.4.1. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ всСгда Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³

НаиболСС досадной ошибкой Π½Π΅ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… соавторов являСтся сборка Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ дистрибутива Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‡Ρ‚ΠΎ связано с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ пСрСзаписи ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ рСкомСндуСтся.

ВмСсто этого слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π·Π²Π°Π½ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня нСпосрСдствСнно Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ имя ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ имСнная Ρ‡Π°ΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π°. НапримСр, прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ fΠΎΠΎ-0.23.tar.gz распаковываСтся Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ fΠΎΠΎ-0.23.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 19.1 дСмонстрируСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для make-Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ дистрибутива называСтся "foobar", a SRC содСрТит список Ρ„Π°ΠΉΠ»ΠΎΠ² дистрибутива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 19.1. make-ΠΏΡ€Π°Π²ΠΈΠ»Π° для tar-Π°Ρ€Ρ…ΠΈΠ²Π°

foobar-$(VERS) .tar.gz:

 @ls $(SRC) | sed s:^:foobar-$(VERS)/: >MANIFEST

 @(cd ..; ln -s foobar foobar-$(VERS))

 (cd ..; tar -czvf foobar/foobar-$(VERS).tar.gz `cat foobar /MANIFEST`)

 @(cd ..; rm foobar-$(VERS))

19.2.4.2. Π’ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π² дистрибутив README-Ρ„Π°ΠΉΠ»

Π’ дистрибутив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слСдуСт Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» README, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΡƒΡ‚Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΏΠΎ дистрибутиву. Богласно Π΄Π°Π²Π½Π΅ΠΌΡƒ соглашСнию (созданному самим ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ Π΄ΠΎ 1980 Π³ΠΎΠ΄Π°, ΠΈ распространСнному Π² Usenet Π² Π½Π°Ρ‡Π°Π»Π΅ 1980-Ρ… Π³ΠΎΠ΄ΠΎΠ²), Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±Π΅ΡΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹Π΅ исслСдоватСли, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ€Π°ΡΠΏΠ°ΠΊΡƒΡŽΡ‚ исходный ΠΊΠΎΠ΄.

README-Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π²ΠΎΠ΄Π½Ρ‹ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Π° Π½Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Рассмотрим ΠΏΡƒΠ½ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рСкомСндуСтся Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² README-Ρ„Π°ΠΉΠ»Ρ‹.

1. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

2. Π‘сылка Π½Π° Web-сайт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ссли ΠΎΠ½ сущСствуСт).

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ пСрСносимости.

4. Π‘Ρ…Π΅ΠΌΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ.

5. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ компиляции/установкС ΠΈΠ»ΠΈ ссылка Π½Π° Ρ„Π°ΠΉΠ», содСрТащий Ρ‚Π°ΠΊΠΈΠ΅ инструкции (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ INSTALL).

6. Π‘писок ΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ²/благодарностСй ΠΈΠ»ΠΈ ссылка Π½Π° содСрТащий Π΅Π³ΠΎ Ρ„Π°ΠΉΠ» (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ CREDITS).

7. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ новости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ссылка Π½Π° содСрТащий ΠΈΡ… Ρ„Π°ΠΉΠ» (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ NEWS).

8. ΠΠ΄Ρ€Π΅ΡΠ° списков рассылки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ своС врСмя Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ назывался READ.ME, ΠΎΠ΄Π½Π°ΠΊΠΎ с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ»ΠΎΡ…ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слишком склонны ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с суффиксом .ME ΠΊΠ°ΠΊ нСтСкстовый ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ, Π° Π½Π΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ устарСл ΠΈ ΡƒΠΆΠ΅ Π½Π΅ рСкомСндуСтся.

19.2.4.3. ΠŸΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ стандартной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ имСнования Ρ„Π°ΠΉΠ»ΠΎΠ²

Π•Ρ‰Π΅ Π΄ΠΎ просмотра README-Ρ„Π°ΠΉΠ»Π° Π±Π΅ΡΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ распакованного дистрибутива. ИмСна Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π½Π΅ΠΌ сами ΠΏΠΎ сСбС способны нСсти ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Боблюдая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ стандартныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ наимСнования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ†Π΅Π½Π½ΡƒΡŽ подсказку ΠΎ Ρ‚ΠΎΠΌ, "ΠΊΡƒΠ΄Π° ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ дальшС".

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стандартныС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π° Ρ‚Π°ΠΊΠΆΠ΅ описания ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². НС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дистрибутив нуТдаСтся Π²ΠΎ всСх пСрСчислСнных Ρ„Π°ΠΉΠ»Π°Ρ….

README

Π€Π°ΠΉΠ»-ΠΏΡƒΡ‚Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

INSTALL

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, компиляции ΠΈ установкС.

AUTHORS

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ участников ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (GNU-соглашСниС).

NEWS

ПослСдниС новости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

HISTORY

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

CHANGES

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ рСдакциями.

COPYING

Π›ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ условия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (GNU-соглашСниС).

LICENSE

Π›ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ условия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

FAQ

ВСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ с ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΌ часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вопросов ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ сущСствованиС ΠΎΠ±Ρ‰Π΅Π³ΠΎ соглашСния, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Π΅ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС, содСрТат ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для чтСния людьми, Π° Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ сборки. Π”Π°Π½Π½ΠΎΠ΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² README Π±Ρ‹Π»ΠΎ Π΄Π°Π²Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π€ΠΎΠ½Π΄ΠΎΠΌ свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

НаличиС Ρ„Π°ΠΉΠ»Π° FAQ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ мноТСство нСприятностСй. Когда ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ вопрос ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ встрСчаСтся часто, Π΅Π³ΠΎ слСдуСт ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² список часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вопросов, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ свои вопросы ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ FAQ-Ρ„Π°ΠΉΠ» способСн Π½Π° порядок ΠΈΠ»ΠΈ большС ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅, которая Π»Π΅ΠΆΠΈΡ‚ Π½Π° ΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’Π΅ΡΡŒΠΌΠ° Ρ†Π΅Π½Π½Ρ‹ΠΌ являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² HISTORY ΠΈΠ»ΠΈ Ρ‹, содСрТащих Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии. ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ сущСствованиС ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ придСтся ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с судСбным процСссом ΠΏΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ² (Ρ‚Π°ΠΊΠΎΠ΅ Π΅Ρ‰Π΅ Π½Π΅ ΡΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ).