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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка Linux. ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 69

Автор Уильям Шоттс

НСсмотря Π½Π° большоС число популярных языков программирования, Π³ΠΎΡΠΏΠΎΠ΄ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ…. МногиС соврСмСнныС систСмы ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ написаны Π½Π° C ΠΈΠ»ΠΈ Π½Π° C++. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС C.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языках высокого уровня ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² инструкции Π½Π° машинном языкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” компилятора. НСкоторыС компиляторы Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ высокоуровнСвыС инструкции Π½Π° язык ассСмблСра, Π° Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ассСмблСра производят ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сопутствуСт процСсс ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ мноТСство Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ открытия Ρ„Π°ΠΉΠ»Π°. МногиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΅Π΅, Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ слишком Ρ€Π°ΡΡ‚ΠΎΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свою ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ открытия Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π·Π½Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈ Π΄Π°Ρ‚ΡŒ всСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Они содСрТат мноТСство ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ мноТСством ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Если Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ /lib ΠΈ /usr/lib, ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Для формирования связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ компилятора ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ (linker, Π΅Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ связСй). ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого процСсса являСтся выполняСмый Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ использованию.

ВсС Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ?


НСт. Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ сцСнарии Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСпосрСдствСнно. Они написаны Π½Π° языках, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ языками сцСнариСв, ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ языками. К числу этих языков, ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ растСт Π² послСдниС Π³ΠΎΠ΄Ρ‹, относятся Perl, Python, PHP, Ruby ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языках сцСнариСв Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈ выполняСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽΡΡ Π² Π½Π΅ΠΌ. Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° встрСчаСтся, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² скомпилированной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ исходный ΠΊΠΎΠ΄ инструкций Π±Ρ‹Π» ΡƒΠΆΠ΅ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ сохранСн Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ выполняСмом Ρ„Π°ΠΉΠ»Π΅.

Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚ΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ языки Ρ‚Π°ΠΊ популярны? Для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΎΠ½ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «достаточно быстрыми», Π½ΠΎ самоС большоС ΠΈΡ… достоинство Π² простотС ΠΈ скорости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² сравнСнии с ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ β€” это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ цикличСский процСсс, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€ΠΈ этапа: созданиС исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ тСстированиС. Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… этап компиляции Π² упомянутом Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вСсьма ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ языки ΠΈΠ·Π±Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‚ нСобходимости компиляции ΠΈ Ρ‚Π΅ΠΌ самым ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C


Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ скомпилируСм. Для этого Π½Π°ΠΌ понадобятся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ компилятор, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²ΠΎ всСх систСмах Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ компилятор языка C с ΠΈΠΌΠ΅Π½Π΅ΠΌ gcc (GNU C Compiler), ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ написанный Π ΠΈΡ‡Π°Ρ€Π΄ΠΎΠΌ Π‘Ρ‚ΠΎΠ»Π»ΠΌΠ°Π½ΠΎΠΌ. МногиС дистрибутивы Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ gcc ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ присутствиС Π² систСмС ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

[ [email protected]x ~]$ which gcc

/usr/bin/gcc

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ присутствии компилятора.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

Π’Π°Ρˆ дистрибутив ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΏΠ°ΠΊΠ΅Ρ‚ (ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²) для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ этом случаС рСкомСндуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² своСй систСмС. Если Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚Π°ΠΏΠ°ΠΊΠ΅Ρ‚ отсутствуСт, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ gcc ΠΈ make. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах ΠΈΡ… Π²ΠΏΠΎΠ»Π½Π΅ достаточно для выполнСния ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π»Π΅Π΅.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π°


Π’ нашСм ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ ΠΌΡ‹ скомпилируСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ diction ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU. Π­Ρ‚Π° малСнькая удобная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΠ° провСряСт качСство ΠΈ ΡΡ‚ΠΈΠ»ΡŒ содСрТимого тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ². А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°, ΠΎΠ½Π° Π»Π΅Π³ΠΊΠΎ компилируСтся.

БлСдуя соглашСниям, ΠΌΡ‹ сначала создадим ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ src для исходного ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π² Π½Π΅Π³ΠΎ исходный ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ftp:

[ [email protected] ~]$ mkdir src

[ [email protected] ~]$ cd src

[ [email protected] src]$ ftp ftp.gnu.org

Connected to ftp.gnu.org.

220 GNU FTP server ready.

Name (ftp.gnu.org:me): anonymous

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> cd gnu/diction

250 Directory successfully changed.

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

-rw-r--r-- 1 1003 65534 68940 Aug 28 1998 diction-0.7.tar.gz

-rw-r--r-- 1 1003 65534 90957 Mar 04 2002 diction-1.02.tar.gz

-rw-r--r-- 1 1003 65534 141062 Sep 17 2007 diction-1.11.tar.gz

226 Directory send OK.

ftp> get diction-1.11.tar.gz

local: diction-1.11.tar.gz remote: diction-1.11.tar.gz

200 PORT command successful. Consider using PASV.

150 Opening BINARY mode data connection for diction-1.11.tar.gz (141062

bytes).

226 File send OK.

141062 bytes received in 0.16 secs (847.4 kB/s)

ftp> bye

221 Goodbye.

[ [email protected] src]$ ls

diction-1.11.tar.gz

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ сами управляСм процСссом компиляции исходного ΠΊΠΎΠ΄Π°, помСстим Π΅Π³ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ~/src. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, устанавливаСмый дистрибутивом, помСщаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/src, Π° исходный ΠΊΠΎΠ΄, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для использования мноТСством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ устанавливаСтся Π² /usr/local/src.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ распространяСтся Π² Π²ΠΈΠ΄Π΅ сТатого tar-Ρ„Π°ΠΉΠ»Π°. Иногда Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π°Ρ€Π±ΠΎΠ»Π»Π°ΠΌΠΈ (tarball), эти Ρ„Π°ΠΉΠ»Ρ‹ содСрТат Π΄Π΅Ρ€Π΅Π²ΠΎ исходных тСкстов, ΠΈΠ»ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… исходный ΠΊΠΎΠ΄. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ FTP-сайту, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ список доступных tar-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠ°ΠΌΡƒΡŽ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ get ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ftp скопировали Ρ„Π°ΠΉΠ» с сСрвСра FTP Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ tar-Ρ„Π°ΠΉΠ»Π° Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ. ДСлаСтся это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ tar:

[ [email protected] src]$ tar xzf diction-1.11.tar.gz

[ [email protected] src]$ ls

diction-1.11 diction-1.11.tar.gz

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° diction, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ всСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU, слСдуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ стандартам ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ исходного ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… исходных ΠΊΠΎΠ΄ΠΎΠ², доступных Π² экосистСмС Linux, Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт этому стандарту. Одним ΠΈΠ· элСмСнтов стандарта являСтся созданиС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ исходных тСкстов ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ project-x.xx послС распаковывания tar-Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, содСрТащим имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€ вСрсии. Вакая схСма ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ установку Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако ΠΏΠ΅Ρ€Π΅Π΄ распаковываниСм Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π΅Ρ€Π΅Π²Π°. ΠŸΡ€ΠΈ распаковывании Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π΅ создаСтся, Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π΅Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ…Ρƒ ΠΈ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ Π² Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ src. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ для исслСдования содСрТимого tar-Ρ„Π°ΠΉΠ»Π°:

tar tzvf tarfile | head

ИсслСдованиС Π΄Π΅Ρ€Π΅Π²Π° исходных тСкстов


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ распаковывания tar-Ρ„Π°ΠΉΠ»Π° Π±Ρ‹Π» создан Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ new diction-1.11. Π­Ρ‚ΠΎΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ содСрТит Π΄Π΅Ρ€Π΅Π²ΠΎ исходных тСкстов. Π”Π°Π²Π°ΠΉΡ‚Π΅ заглянСм Π²Π½ΡƒΡ‚Ρ€ΡŒ:

[ [email protected] src]$ cd diction-1.11

[ [email protected] diction-1.11]$ ls

config.guess diction.c getopt.c nl

config.h.in diction.pot getopt.h nl.po

config.sub diction.spec getopt_int.h README

configure diction.spec.in INSTALL sentence.c

configure.in diction.texi.in install-sh sentence.h

COPYING en Makefile.in style.1.in

de en_GB misc.c style.c

de.po en_GB.po misc.h test

diction.1.in getopt1.c NEWS

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ мноТСство Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ GNU, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ вмСстС с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ README, INSTALL, NEWS ΠΈ COPYING. Π’ Π½ΠΈΡ… содСрТится описаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, информация ΠΎ порядкС сборки ΠΈ установки ΠΈ условия Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ соглашСния. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ всСгда Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ README ΠΈ INSTALL ΠΏΠ΅Ρ€Π΅Π΄ сборкой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ интСрСсными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ .c ΠΈ .h:

[ [email protected] diction-1.11]$ ls *.c

diction.c getopt1.c getopt.c misc.c sentence.c style.c

[ [email protected] diction-1.11]$ ls *.h

getopt.h getopt_int.h misc.h sentence.h

Π€Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .c содСрТат Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C, входящиС Π² состав ΠΏΠ°ΠΊΠ΅Ρ‚Π° (style ΠΈ diction), Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Π΅ Π½Π° нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ часто Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅, Π±ΠΎΠ»Π΅Π΅ простыС Π² сопровоТдСнии Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹. Π€Π°ΠΉΠ»Ρ‹ с исходным ΠΊΠΎΠ΄ΠΎΠΌ содСрТат простой тСкст, ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ less:

[ [email protected] diction-1.11]$ less diction.c

Π€Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .h извСстны ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Они Ρ‚ΠΎΠΆΠ΅ содСрТат простой тСкст β€” описаниС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π° с исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ компилятор смог ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ описаниС всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π‘Π»ΠΈΠΆΠ΅ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π² Ρ„Π°ΠΉΠ»Π΅ diction.c имССтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка:

#include "getopt.h"

Она Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ компилятора ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°Π» getopt.h, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° Π² diction.c, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«ΡƒΠ·Π½Π°Ρ‚ΡŒΒ», Ρ‡Ρ‚ΠΎ имССтся Π² Ρ„Π°ΠΉΠ»Π΅ getopt.c. Π€Π°ΠΉΠ» getopt.c содСрТит ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±Π΅ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, style ΠΈ diction.