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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 6

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

β–‘ /bin β€” Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (binaries), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, примСняСмыС для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы;

β–‘ /usr/bin β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, стандартныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, доступныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ;

β–‘ /usr/local/bin β€” Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, относящиСся ΠΊ этапу ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Если Π²ΠΎΠΉΡ‚ΠΈ Π² систСму ΠΊΠ°ΠΊ администратор, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΈΠΌΠ΅Π½Π΅ΠΌ root, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ с хранящимися систСмными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ /sbin ΠΈ /usr/sbin.

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ прилоТСния сторонних ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ /opt, Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ инсталляционныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ инсталляционныС сцСнарии. 

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

НС стоит ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH, ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠΉ увСрСнности Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ОБ Linux, ΠΊΠ°ΠΊ ΠΈ UNIX, для раздСлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH примСняСтся символ двоСточия (:) Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ символа Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² ОБ MS-DOS ΠΈ Windows. (ОБ UNIX сдСлала Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π²ΠΎΠΉ, поэтому ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ отличаСтся Windows, Π° Π½Π΅ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² UNIX всС Π½Π΅ Ρ‚Π°ΠΊ!) Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH:

/usr/local/bin:/bin:/usr/bin:.:/home/neil/bin:/usr/X11R6/bin

Π’ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH содСрТатся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ для хранСния стандартных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (.), исходный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ X Window System.

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Π² ОБ Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прямой слэш (/) для отдСлСния ΠΈΠΌΠ΅Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слэша (\), примСняСмого Π² ОБ Windows. И снова ОБ UNIX Π²Ρ‹Π±ΠΈΡ€Π°Π»Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

ВСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹

Для Π²Π²ΠΎΠ΄Π° ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² ΠΊΠ½ΠΈΠ³Π΅, Π²Π°ΠΌ понадобится тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π’ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… систСмах Linux Π΅ΡΡ‚ΡŒ большой Π²Ρ‹Π±ΠΎΡ€ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ популярСн Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ vi.

Оба Π°Π²Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Emacs, поэтому ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° знакомство с основными функциями этого ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ΠŸΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всС дистрибутивы ОБ Linux Emacs Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Web-сайтС GNU ΠΏΠΎ адрСсу http://www.gnu.org ΠΈΠ»ΠΈ ΠΆΠ΅ Π²Π·ΡΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ для графичСских срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Web-сайтС XEmacs ΠΏΠΎ адрСсу http://www.xemacs.org.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Emacs, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ срСдством обучСния. НачнитС с выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ emacs, Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш <Ctrl>+<H> с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ символа t для доступа ΠΊ этому срСдству. Π£ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Emacs Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π΅ΠΌ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Emacs Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш <Ctrl>+<H> с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ символа i. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях Emacs ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСню, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ доступ ΠΊ срСдству обучСния ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ руководству.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка Π‘

Π’ систСмах, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… стандарту POSIX, компилятор языка Π‘ называСтся с89. РаньшС компилятор языка Π‘ назывался просто сс. Π¨Π»ΠΈ Π³ΠΎΠ΄Ρ‹, Ρ€Π°Π·Π½Ρ‹Π΅ поставщики ΠΏΡ€ΠΎΠ΄Π°Π²Π°Π»ΠΈ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ систСмы с компиляторами Π‘, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ функциями ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ часто всС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΌΠΈ сс.

Когда создавался стандарт POSIX, Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cc, которая Π±Ρ‹Π»Π° Π±Ρ‹ совмСстима со всСми этими Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ. 

ВмСсто этого ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ Ρ€Π΅ΡˆΠΈΠ» ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для компилятора языка Π‘ β€” с89. Если эта ΠΊΠΎΠΌΠ°Π½Π΄Π° прСдставлСна, ΠΎΠ½Π° всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΡ†ΠΈΠΈ нСзависимо ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Π’ систСмах Linux, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Π΄Π΅Π»Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ стандартам, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ с89, cc ΠΈ gcc ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° систСмный компилятор языка Π‘, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ компилятор GNU Π‘ ΠΈΠ»ΠΈ gcc. Π’ систСмах UNIX компилятор языка Π‘ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда называСтся cc.

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ gcc, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ поставляСтся Π² дистрибутивах Linux ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ для языка Π‘ синтаксис стандарта ANSI. Если ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² вашСй систСмС Π½Π΅Ρ‚ gcc, ΠΌΡ‹ совСтуСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Найти Π΅Π³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎ адрСсу http://www.gnu.org. Π’ΡΡŽΠ΄Ρƒ, Π³Π΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ gcc, просто замСняйтС Π΅Π΅ подходящСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ вашСй систСмы.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.1. Π’Π°ΡˆΠ° пСрвая Linux-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС C

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² ОБ Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка Π‘, написав, ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π² ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ Linux-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π•ΡŽ, кстати, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ самая извСстная ΠΈΠ· всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, выводящая сообщСниС "Hello World" ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€").

1. Π”Π°Π»Π΅Π΅ приводится тСкст Ρ„Π°ΠΉΠ»Π° hello.c:

#include <stdio.h>

#include <stdlib.h>


int main() {

 printf("Hello World\n");

 exit(0);

}

2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅, скомпонуйтС ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

$ gcc -ΠΎ hello.c $ ./hello

Hello World

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π’Ρ‹ запустили компилятор GNU Π‘ (Π² Linux, вСроятнСС всСго, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΈ ΠΊΠ°ΠΊ cc), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ оттранслировал исходный ΠΊΠΎΠ΄ Π½Π° языкС Π‘ Π² исполняСмый Ρ„Π°ΠΉΠ», Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ hello. Π’Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈ ΠΎΠ½Π° Π²Ρ‹Π²Π΅Π»Π° Π½Π° экран привСтствиС. Π­Ρ‚ΠΎ Π½Π°ΠΈΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π½ΠΎ Ссли Π²Ρ‹ смогли с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вашСй систСмы Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ этого мСста, Ρ‚ΠΎ смоТСтС ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ. Если ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ сработала, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² вашСй систСмС установлСн компилятор языка Π‘. НапримСр, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах Linux Π΅ΡΡ‚ΡŒ установочная опция, названная Software Development (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ПО) (ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ слСдуСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это пСрвая выполнСнная Π²Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, самоС врСмя ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основныС полоТСния. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° hello, вСроятно, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² вашСм исходном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Если Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ссылка Π½Π° ваш исходный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π½Π΅ смоТСт Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ hello. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH содСрТит Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°Π·Π²Π°Π½Π½ΡƒΡŽ hello, вмСсто вашСй Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ упомянут Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ path Ρ€Π°Π½ΡŒΡˆΠ΅ вашСго исходного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ прСфиксом ./ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ./hello). Π”Π°Π½Π½Ρ‹ΠΉ прСфикс сообщаСт ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΠΎ нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. (Π’ΠΎΡ‡ΠΊΠ° β€” это условноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.)

Если Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ†ΠΈΡŽ -o name, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору, ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ», компилятор помСстит Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.out (Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ассСмблСрный Π²Ρ‹Π²ΠΎΠ΄). НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.out, Ссли Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ скомпилировали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° Π½Π°ΠΉΡ‚ΠΈ Π΅Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅! Когда ОБ UNIX Ρ‚ΠΎΠ»ΡŒΠΊΠΎ появилась, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Ρ…ΠΎΡ‚Π΅Π²ΡˆΠΈΠ΅ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Π½Π΅ΠΉ Π² ΠΈΠ³Ρ€Ρ‹, часто запускали ΠΈΡ… ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.out, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΉΠΌΠ°Π½Π½Ρ‹ΠΌΠΈ систСмным администратором, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ установки ОБ UNIX Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π΅Ρ‡Π΅Ρ€ всС Ρ„Π°ΠΉΠ»Ρ‹ с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.out.

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π½Π°Ρ ΠΊΠ°Ρ€Ρ‚Π° систСмы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ОБ Linux Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ срСдства ΠΈ рСсурсы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π΄Π°Π½ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ².

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ хранятся Π² ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… для Π½ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, прСдоставляСмыС систСмой для ΠΎΠ±Ρ‰Π΅Π³ΠΎ использования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/bin. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ систСмными администраторами для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ хост-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ локальной сСти, часто хранятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/local/bin ΠΈΠ»ΠΈ /opt.

Администраторы ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ /opt ΠΈ /usr/local, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ хранят прСдоставляСмыС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ поставщиками Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ свСТиС дополнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, прСдоставляСмых систСмой. Подобная организация хранСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ врСмя ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, Ρ‚.ΠΊ. Π² этом случаС потрСбуСтся ΡΠ±Π΅Ρ€Π΅Ρ‡ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ /opt ΠΈ /usr/local. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π΅Ρ‚Π²ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ /usr/local Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмныС прилоТСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для запуска ΠΈ доступа ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. Для Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ Π² вашСм исходном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства ΠΈ систСмы программирования ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнныС структуры ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Π°ΠΆΠ½Π΅ΠΉΡˆΠ°Ρ срСди Π½ΠΈΡ… β€” графичСская ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° X Window System, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ устанавливаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/X11 ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/bin/X11. Π’ дистрибутивах Linux, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, примСняСтся вСрсия X.Org Foundation графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ X Window System, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰Π°ΡΡΡ Π½Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Revision 7 (X11R7). Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ ΠΈΠ½Ρ‹Π΅ вСрсии X Window System, устанавливаСмыС Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/openwin для ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Open Windows ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Sun Π² систСмС Solaris.