линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля

Линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ «Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ», Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C++, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ C, Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ. Π­Ρ‚ΠΈ Π΄Π²Π° языка хотя ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎ своСй сути, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ основу. C++-программисту Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ„Π΅Π½ΠΎΠΌΠ΅Π½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, написанной Π½Π° C.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ относится ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ соврСмСнным Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ систСмам (FreeBSD, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Linux, Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

1.2. УсловныС обозначСния

Π’ ΠΊΠ½ΠΈΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ достаточно ΠΌΠ°Π»ΠΎ условных ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Листинги ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ€Π΅Π·ΠΊΠΈ ΠΈΠ· листингов ΠΈ содСрТимоС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ синим Ρ†Π²Π΅Ρ‚ΠΎΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄, Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (root) Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² качСствС ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ #

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

1.3. Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ инструмСнтариСм. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ программиста зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ… языках ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ. Наш инструмСнтарий Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ·: 1) ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux (GNU/Linux) с тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ; 2) ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π° с Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ; 3) Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. Ну ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ ΠΈΠ· тСрпСния ΠΈ усСрдия.

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Linux (здСсь ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ GNU/Linux). ΠŸΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ практичСски любой соврСмСнный дистрибутив. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, какая вСрсия ядра Linux Ρƒ вас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. НабСритС Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: Π£ мСня ядро вСрсии 2.6.10. Π£ вас, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Дистрибутивы, построСнныС Π½Π° ядрах вСрсий 2.4.x ΠΈ 2.6.x достаточно соврСмСнныС для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ воспроизвСсти всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² этой ΠΊΠ½ΠΈΠ³Π΅. ВСрсии 2.0.x ΠΈ 2.2.x Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности, описанныС Π² этой ΠΊΠ½ΠΈΠ³Π΅ Π² этих ядрах Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

МногиС программисты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ для программирования (KDevelop, Glade ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅). ΠœΡ‹ откаТСмся ΠΎΡ‚ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: 1) это ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ Unix; 2) Π·Π° всСми этими срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ стоят Ρ‚Π΅ самыС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно. Нам Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС потрСбуСтся лишь ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make.

1.4. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь

Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ошибки/ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ. Или Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² этой ΠΊΠ½ΠΈΠ³Π΅ ΠΏΠ»ΠΎΡ…ΠΎ описано, сообщайтС ΠΎΠ± этом ΠΏΠΎ адрСсу zlp@lindevel.ru ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΡƒΠΌΠ΅ Π½Π° сайтС Lindevel.Ru (http://www.lindevel.ru).

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² эту ΠΊΠ½ΠΈΠ³Ρƒ. Π’ этом случаС я просто ΠΏΡ€ΠΎΡˆΡƒ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΌΠ½Π΅ ΠΎΠ± этом.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux

ВсС дСйствия Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, поэтому ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ интСрСсно Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ свои. МногиС хотят внСсти свой Π²ΠΊΠ»Π°Π΄ Π² ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ OpenSource.

Π­Ρ‚ΠΎ обзорная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux. ΠœΡ‹ рассмотрим ΠΊΠ°ΠΊΠΈΠ΅ языки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅ всСго, рассмотрим основныС понятия, Π° Ρ‚Π°ΠΊΠΆΠ΅ возмоТности, Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· самых популярных языков программирования, ΠΊΠ°ΠΊ Π΅Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

1. На Ρ‡Π΅ΠΌ ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ слоТилось Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ядро Unix Π±Ρ‹Π»ΠΎ написано Π½Π° языкС Π‘ΠΈ. Π”Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, этот язык Π±Ρ‹Π» создан для написания ядра Unix. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ядро Linux Π±Ρ‹Π»ΠΎ основано Π½Π° ядрС Minix (вСрсии Unix), Ρ‚ΠΎ ΠΎΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π»ΠΎ написано Π½Π° Π‘ΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ основной язык программирования для Linux это Π‘ΠΈ ΠΈ Π‘++. Вакая тСндСнция ΡΠΎΡ…Ρ€Π°Π½ΡΠ»Π°ΡΡŒ Π½Π° протяТСнии Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

А Π²ΠΎΠΎΠ±Ρ‰Π΅, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Linux ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° любом языкС начиная ΠΎΡ‚ Java ΠΈ Python ΠΈ заканчивая Π‘# ΠΈ Π΄Π°ΠΆΠ΅ Pascal. Для всСх языков Π΅ΡΡ‚ΡŒ компиляторы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹. ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘++ слоТно, Π° Π‘ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΡƒΠΆΠ΅ считаСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, поэтому мноТСство программистов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. НапримСр, мноТСство систСмных инструмСнтов написаны Π½Π° Python ΠΈΠ»ΠΈ Perl. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Linux Mint, установщик Ubuntu ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрипты apt написаны Π½Π° Python. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ скриптов, Π² Ρ‚ΠΎΠΌ числС простыС скрипты ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ написаны Π½Π° Perl. Иногда для скриптов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ruby. Π­Ρ‚ΠΎ скрипты OpenShift ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Metasploit. НСкоторыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ кроссплатформСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Java. Но основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ систСмы написаны всС ΠΆΠ΅ Π½Π° Π‘ΠΈ.

2. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ дСлятся Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈ всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС Π±Ρ‹ Π²Ρ‹ Π½Π΅ Π½Π°Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ всС Π±ΡƒΠ΄Π΅Ρ‚ свСдСно ΠΊ систСмным Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Π‘ΠΈ. НапримСр, Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ стандартныС возмоТности этого языка, Π° сам ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΡƒΠΆΠ΅ являСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° Π‘ΠΈ/Π‘++, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для доступа ΠΊ основным возмоТностям. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ языки, Π²Ρ€ΠΎΠ΄Π΅ Go, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сразу пСрСводятся Π½Π° ассСмблСр, Π½ΠΎ Ρ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ‚Π΅ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ здСсь. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ систСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ linux, Π² основном, это Π‘ΠΈ ΠΈΠ»ΠΈ Π‘++.

3. ΠŸΡ€ΠΎΡ†Π΅ΡΡ сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ создадим свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ происходит процСсс сборки, ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… этапов ΠΎΠ½ состоит.

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

Π”Π°Π»Π΅Π΅ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ приступаСт ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ со статичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ модулями. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π° создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Волько Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим вСсь Ρ”Ρ‚ΠΎΡ‚ процСсс Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ с использованиСм компилятора GCC.

4. Как ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

Для сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° компиляторов, это Gcc ΠΈ Clang. Пока Ρ‡Ρ‚ΠΎ GCC Π±ΠΎΠ»Π΅Π΅ распространСн, поэтому Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠΆΠ΅ установлСна Π² вашСй систСмС, Ссли ΠΆΠ΅ Π½Π΅Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для установки Π² Ubuntu:

sudo apt install gcc

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ написанию ΠΈ сборкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим синтаксис ΠΈ ΠΎΠΏΡ†ΠΈΠΈ компилятора:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΉ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌ просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ исходныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΎΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅ΠΌ сСгодня ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

БобствСнно, это всС самоС основноС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ понадобится. Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Она Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строку тСкста Π½Π° экран ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ интСрСснСС, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈΠ· числа 9. Π’ΠΎΡ‚ исходный ΠΊΠΎΠ΄:

int main() <
printf(«losst.ru\n»);
printf(«ΠšΠΎΡ€Π΅Π½ΡŒ: %f\n», sqrt(9));
return 0;
>

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 18 17 29. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 18 17 29. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 18 17 29. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ корня Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ с исходниками ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 17 29 23. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 17 29 23. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 17 29 23. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Π­Ρ‚ΠΎ этап компиляции, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅Ρ‚ ошибок, Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Если исходных Ρ„Π°ΠΉΠ»ΠΎΠ² нСсколько, Ρ‚ΠΎ такая ΠΊΠΎΠΌΠ°Π½Π΄Π° выполняСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. Π”Π°Π»Π΅Π΅ выполняСм Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΡƒ:

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 17 32 11. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 17 32 11. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 17 32 11. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 17 33 40. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 17 33 40. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 17 33 40. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, всС эти дСйствия ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… графичСских срСд, Π½ΠΎ выполняя всС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ldd Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 17 42 10. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 17 42 10. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 17 42 10. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Π­Ρ‚ΠΎ Π΄Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°, стандартная libc ΠΈ libm, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ.

5. Автоматизация сборки

Когда ΠΌΡ‹ рассматриваСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ систСму Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° исходных Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΎ, Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΈΡ… компиляции. МоТно Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π·Π΄Π΅. Для этого сущСствуСт ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Makefile. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» состоит ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ синтаксис:

Ρ†Π΅Π»ΡŒ: зависимости
ΠΊΠΎΠΌΠ°Π½Π΄Π°

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 18 17 12. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 18 17 12. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 18 17 12. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Π—Π°Ρ‚Π΅ΠΌ Π²Π°ΠΌ достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ make для запуска компиляции, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΡΠΎΠ±Ρ€Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. Snimok ekrana iz 2017 05 03 17 53 02. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-Snimok ekrana iz 2017 05 03 17 53 02. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Snimok ekrana iz 2017 05 03 17 53 02. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° снова Π³ΠΎΡ‚ΠΎΠ²Π° ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Linux ΠΎΡ‡Π΅Π½ΡŒ интСрСсно ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’Ρ‹ сами ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² этом, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚Π΅ΡΡŒ Π² этом Π΄Π΅Π»Π΅. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ всС Π² Ρ‚Π°ΠΊΠΎΠΉ нСбольшой ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π½ΠΎ ΠΌΡ‹ рассмотрСли самыС основы ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ Π±Π°Π·Ρƒ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли основы программирования Π² linux, Ссли Ρƒ вас ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ вопросы, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ Π² коммСнтариях!

ΠšΡƒΡ€Ρ программирования Π½Π° Π‘ΠΈ ΠΏΠΎΠ΄ Linux:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля

Π§Ρ‚ΠΎΠ±Ρ‹ сразу Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, создадим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΎΠ½ извСстной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Hello World». Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст:

Наш исходный ΠΊΠΎΠ΄ написан Π½Π° языкС программирования C. Π―Π·Ρ‹ΠΊΠΈ программирования Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программист ΠΌΠΎΠ³ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Но Π²ΠΎΡ‚ Π±Π΅Π΄Π°, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка программирования. Π£ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π΅ΡΡ‚ΡŒ свой язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ исполняСмым ΠΊΠΎΠ΄ΠΎΠΌ (‘executable code’). ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Hello World Π² машинном ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π½Π΅ΠΌ Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ΡΡ. Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слоТный ΠΏΠΎ своСй сути, Π½ΠΎ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π° ΠΎΠ΄ΠΈΠ½ дСнь Π½Π° языкС программирования Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Ρ†Π΅Π»Ρ‹ΠΉ Π³ΠΎΠ΄ Π² машинном ΠΊΠΎΠ΄Π΅. ΠŸΠΎΡ‚ΠΎΠΌ программист сойдСт с ΡƒΠΌΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ компилятор (‘compiler’), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² исполняСмый ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² исполняСмый ΠΊΠΎΠ΄ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ компиляциСй.

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ. Для этого Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Когда ΠΌΡ‹ Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΏΡƒΡ‚ΡŒ ΠΊ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΡƒ, ΠΌΡ‹, Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сообщаСм ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° «ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚» Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ ядру ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, Π° ядро систСмы особым шаманским способом ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ процСссору. Π—Π°Ρ‚Π΅ΠΌ, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‚ΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΆΠ΄Π΅Ρ‚ ΠΎΡ‚ ядра сообщСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π²ΠΎΠ΄ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· Π½Π°Π±Ρ€Π°Ρ‚ΡŒ ./hello ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° повторится. Π’ нашСм случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся ΠΎΡ‡Π΅Π½ΡŒ быстро, ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки «Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚» практичСски сразу.

ΠœΡ‹ рассмотрСли ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ случай, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° написана Π±Π΅Π· синтаксичСских ошибок. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π»Π° ΠΊΠ°Π½ΠΎΠ½Π°ΠΌ языка C. Для этого достаточно ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой Π² ΠΊΠΎΠ½Ρ†Π΅ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf(): Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚ΠΎ компилятор выругаСтся, ΡƒΠΊΠ°Π·Π°Π² Π½Π°ΠΌ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ считаСт Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ: Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС говорится, Ρ‡Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ hello.c (Ρƒ нас ΠΎΠ½ СдинствСнный) Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Вторая строка сообщаСт, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ: сСдьмая строка Ρ„Π°ΠΉΠ»Π° hello.c Π²Ρ‹Π·Π²Π°Π»Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ (error). Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ°: синтаксичСская ошибка ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой.

Заглянув Π² Ρ„Π°ΠΉΠ» hello.c ΠΌΡ‹ с ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ…ΡƒΠ»ΠΈΠ³Π°Π½ΠΈΠ»ΠΈ ΠΌΡ‹ Π½Π΅ Π² сСдьмой, Π° Π² ΡˆΠ΅ΡΡ‚ΠΎΠΉ строкС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Π½Π΅Π»Π°Π΄Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сСдьмой строкС, Π½ΠΎ написал ‘before’ (Π΄ΠΎ), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°ΠΉ Π½Π°Π·Π°Π΄».

ЕстСствСнно, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ исправим ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΠΈ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ ΠΈ Ρ€Π΅Ρ‡ΠΈ. Если ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ старый Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ hello, Π΄ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ Π½Π°ΠΌ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ компиляции, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ компиляция испорчСнного Ρ„Π°ΠΉΠ»Π° Π½Π΅ даст Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Однако ΠΈΠ½ΠΎΠ³Π΄Π° компилятор ΠΌΠΎΠΆΠ΅Ρ‚ лишь «Π·Π°ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚ΡŒ» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅Π»Π°Π΄Π½ΠΎΠ΅, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасноС для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сущСствования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΎΠ³Π΄Π° вмСсто ‘error’ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ‘warning’ (ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅), ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ всС-Ρ‚Π°ΠΊΠΈ появляСтся Π½Π° свСт (Ссли Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π΅Ρ‚ явных ошибок). НС слСдуСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прСдупрСТдСния, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ… случаСв, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π° 100% Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅.

2.2. ΠœΡƒΠ»ΡŒΡ‚ΠΈΡ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ссли исходный ΠΊΠΎΠ΄ сколько-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ станСт просто Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° компилируСтся достаточно Π΄ΠΎΠ»Π³ΠΎ (особСнно это относится ΠΊ языку C++), Ρ‚ΠΎ послС исправлСния ΠΎΠ΄Π½ΠΎΠΉ ошибки, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΊΠΎΠ΄.

ΠšΡƒΠ΄Π° Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΠΎ нСскольким Ρ„Π°ΠΉΠ»Π°ΠΌ (осмыслСнно, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ), ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Как Π²Ρ‹ вскорС ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, это ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ просто.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала разбСрСмся, ΠΊΠ°ΠΊ ΠΈΠ· исходного Ρ„Π°ΠΉΠ»Π° получаСтся Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ. Подобно Ρ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ гусСница Π½Π΅ сразу прСвращаСтся Π² Π±Π°Π±ΠΎΡ‡ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΈ исходный Ρ„Π°ΠΉΠ» Π½Π΅ сразу прСвращаСтся Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ. ПослС компиляции создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ исполняСмый ΠΊΠΎΠ΄ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ «Π²ΠΊΡ€Π°ΠΏΠ»Π΅Π½ΠΈΡΠΌΠΈ», ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΅Ρ‰Π΅ Π½Π΅ способСн ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ. Π‘Ρ€Π°Π·Ρƒ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΡΡ‚ΠΈΡ€Π°Π»ΡŒΠ½Π°Ρ машина: Π²Ρ‹ Π΅Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΊΡƒΠΏΠΈΠ»ΠΈ ΠΈ ΠΎΠ½Π° стоит Ρƒ вас Π΄ΠΎΠΌΠ° Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ состоянии ΠΎΠ½Π° ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π½ΠΎ Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π΄Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ.

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°Π΄ΠΎ сначала Π΄ΠΎΠ±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ записываСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π°Π΄ΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ.

Π’ Linux Π² качСствС Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ld, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΌ арсСналом ΠΎΠΏΡ†ΠΈΠΉ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ gcc ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ опциями, избавляя нас ΠΎΡ‚ «Ρ€ΡƒΡ‡Π½ΠΎΠΉ» Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ запасом Π·Π½Π°Π½ΠΈΠΉ, Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Hello World. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ main.c: Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» hello.c со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ всС-Ρ‚Π°ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Π’ этом Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° nm. Π― ΡƒΠΆΠ΅ оговорился, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ содСрТат Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ символов. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° nm ΠΊΠ°ΠΊ Ρ€Π°Π· позволяСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅. Π’Π΅, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ассСмблСрС Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π² исполняСмом Ρ„Π°ΠΉΠ»Π΅ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ всС (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) стоит Π½Π° своСй ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ: стоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² Π³Ρ€ΡƒΠ΄Ρƒ мусора ΠΈΠ·-Π·Π° смСщСнных ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ (адрСсов). Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² особая Ρ€ΠΎΠ»ΡŒ: ΠΎΠ½ΠΈ хранят Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ символов ΠΈΠΌΠ΅Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ (глобально ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Π’ процСссС Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ происходит стыковка ΠΈΠΌΠ΅Π½ ΠΈ пСрСсчСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ позволяСт нСскольким ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ. Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ nm для Ρ„Π°ΠΉΠ»Π° hello.o, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: О смысловой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π»ΠΈΡ‚Π΅Ρ€ U,T ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. БСйчас ΠΆΠ΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»Π°ΡΡŒ информация ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½Π°Ρ…. Бвоя информация Π΅ΡΡ‚ΡŒ ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ main.o: Π’Π°Π±Π»ΠΈΡ†Ρ‹ символов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² содСрТат ΠΎΠ±Ρ‰Π΅Π΅ имя print_hello. Π’ процСссС Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π²Ρ‹ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ мСста адрСса, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ΠΎΡ‚ ΠΈ вСсь сСкрСт.

2.3. АвтоматичСская сборка

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ для создания Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ° ΠΈΠ· Π΄Π²ΡƒΡ… исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Если Π±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Казалось Π±Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄ Π΅ΡΡ‚ΡŒ: Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарий ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π² этом случаС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдостатки. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· сцСнарий Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ исправили Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…. Π’ нашСм случаС это Π½Π΅ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. Но Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ дСсятках Ρ„Π°ΠΉΠ»ΠΎΠ²! Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сцСнарий «Π½Π°ΠΌΠ΅Ρ€Ρ‚Π²ΠΎ» привязан ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΡƒΡ‚ ΠΆΠ΅ становится ΠΌΠ΅Π½Π΅Π΅ пСрСносимой. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, простому скрипту Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π·Π°Π΄Π°Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² сборки ΠΈ Ρ‚. ΠΏ.), Π° Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ скрипт (с ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ прибамбасами) ΠΏΠ»ΠΎΡ…ΠΎ модСрнизируСтся.

Π’ΠΎ, Ρ‡Ρ‚ΠΎ выполняСт ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make, называСтся сборкой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° сама ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make относится ΠΊ разряду сборщиков.

Π›ΡŽΠ±ΠΎΠΉ Makefile состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов: ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, макроопрСдСлСния ΠΈ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ связки (ΠΈΠ»ΠΈ просто связки). Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ связки состоят Ρ‚ΠΎΠΆΠ΅ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов: Ρ†Π΅Π»ΡŒ, зависимости ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ make ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Π»ΠΈΡ‚Π΅Ρ€Ρ‹ # (Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠ°). О Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ.

ΠœΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ имя практичСски любой строкС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ это имя Π² любоС мСсто сцСнария, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ данная строка. ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ Makefile схоТи с макроконстантами языка C.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сцСнарий сборки для рассмотрСнного Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Hello World. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Makefile: ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ gcc, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² строкС ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ rm стоят табуляции. Как Π²Ρ‹ ΡƒΠΆΠ΅ догадались, эти строки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Makefile Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ с табуляции. Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим всС ΠΏΠΎ порядку.

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

ΠŸΠ΅Ρ€Π²Π°Ρ связка ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»ΡŒ hello. ЦСль отдСляСтся ΠΎΡ‚ списка зависимостСй Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ. Бписок зависимостСй отдСляСтся ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ» символом Π½ΠΎΠ²ΠΎΠΉ строки. А ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ начинаСтся Π½Π° Π½ΠΎΠ²ΠΎΠΉ строкС с символа табуляции. Π’ нашСм случаС каТдая связка содСрТит ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ. Π’ спискС зависимостСй ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» Π²Π΅Ρ‰ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для выполнСния ΠΏΡ€Π°Π²ΠΈΠ»Π°. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°, поэтому ΠΎΠ½ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² спискС зависимостСй. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, поэтому трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ связки для ΠΈΡ… получСния. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ main.o, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ main.c. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ„Π°ΠΉΠ» main.c появляСтся Π² спискС зависимостСй (ΠΎΠ½ Ρ‚Π°ΠΌ СдинствСнный). Аналогичная ситуация с hello.o. Π€Π°ΠΉΠ»Ρ‹ main.c ΠΈ hello.c ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ (ΠΌΡ‹ ΠΈΡ… сами создали), поэтому Π½ΠΈΠΊΠ°ΠΊΠΈΡ… связок для ΠΈΡ… создания Π½Π΅ трСбуСтся.

ΠžΡΠΎΠ±ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°Π΅Ρ‚ цСлСвая связка clean с пустым списком зависимостСй. Π­Ρ‚Π° связка ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ всСх автоматичСски созданных Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ нашСм случаС ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ main.o, hello.o ΠΈ hello. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π²Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… случаях: 1) для очистки Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΡ‚ всСго лишнСго; 2) для пСрСсборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° измСняСтся сам Makefile; 3) Π² Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° трСбуСтся полная пСрСсборка (Π½Π°ΠΏΡ€ΠΌΠΈΠ΅Ρ€, для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ сборки).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сцСнарий. Π€ΠΎΡ€ΠΌΠ°Ρ‚ запуска ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ make ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: ΠžΠΏΡ†ΠΈΠΈ make Π½Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ make Π±Π΅Π· указания Ρ†Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° пСрвая попавшаяся связка (со всСми зависимостями) ΠΈ сборка Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Нам это ΠΈ трСбуСтся: Π’ процСссС сборки ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make ΠΏΠΈΡˆΠ΅Ρ‚ всС выполняСмыС ΠΏΡ€Π°Π²ΠΈΠ»Π°. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ собран, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ΄Π½Ρƒ строку Π² Ρ„Π°ΠΉΠ» hello.c: Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ сборку: Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° make «ΠΏΡ€ΠΎΠ½ΡŽΡ…Π°Π»Π°», Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ hello.c, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ. Π€Π°ΠΉΠ» main.o остался Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ очистим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, оставив ΠΎΠ΄Π½ΠΈ исходники: Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ†Π΅Π»ΡŒ нСпосрСдствСнно Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π’Π°ΠΊ ΠΊΠ°ΠΊ цСлСвая связка clean содСрТит пустой список зависимостСй, Ρ‚ΠΎ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ «Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° измСняСтся список исходных Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° измСняСтся сам Makefile.

2.4. МодСль КИБ

Π˜Ρ‚Π°ΠΊ, сСрвСр прСдоставляСт услуги. Π’ нашСм случаС это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, структуры, пСрСчислСния, константы, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΡ‡. Π’ языкС C++ это Ρ‡Π°Ρ‰Π΅ всСго классы ΠΈΠ»ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов. Π›ΡŽΠ±ΠΎΠΉ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚) ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСдоставлСнными услугами, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ со своими фактичСскими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр структуры, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ константой ΠΈ Ρ‚. ΠΏ. Π’ C++, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ класс ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Ρ‡Π»Π΅Π½Ρ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Linux

Linux β€” это сСмСйство Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм (сокр. «ОБ»), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ядро Linux, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Ρ„ΠΈΠ½Π½ΠΎ-амСриканский программист Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ. ОБ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ядро Linux, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ дистрибутивами Linux, ΠΈ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами ΠΊΠ°ΠΊ Microsoft Windows ΠΈ Apple macOS, Π½ΠΎ с ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΈΡ… исходныС ΠΊΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL, которая ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ созданиС свободного ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (open source software).

Linux сущСствуСт Π²ΠΎΠΊΡ€ΡƒΠ³ нас с сСрСдины 1990-Ρ… Π³ΠΎΠ΄ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ: Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ…, Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ°Ρ…, Π½Π°Ρ€ΡƒΡ‡Π½Ρ‹Ρ… часах, ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, автомобилях ΠΈ Π΄Π°ΠΆΠ΅ Π² Ρ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊΠ°Ρ…. Он ΠΎΠ±Ρ€Π΅Π» ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΈ срСди ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π½Π° Π±Π°Π·Π΅ ядра Linux ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ языки программирования: C/C++, Java, Python, Ruby ΠΈ Π΄Ρ€. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ спСктром ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО.

ЦСлью Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠΊΠΎΠ² β€” Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Linux для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… β€” являСтся ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΠ΅ Linux.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π£Ρ€ΠΎΠΊΠΈ рСгулярно Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ. Π’ процСссС построСния логичСской структуры ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π΅ΠΌ для изучСния Linux, располоТСниС ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ€ΠΎΠΊΠΎΠ² Π½Π° этой страницС отличаСтся ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π­Ρ‚ΠΎ Π½Π΅ ошибка, Π° лишь Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ явлСниС.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Linux, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Π Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ: Windows β€” бизнСс-профСссионалов, Mac β€” творчСских, Π° Linux β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ОБ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Ρ€Ρ‹Π½ΠΎΡ‡Π½ΠΎΠ³ΠΎ спСктра сильно упростил ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, тСхничСскиС трСбования, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Ρ‹Π½ΠΊΠ°. Однако, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ уТСсточил Π½ΠΎΡ€ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ пространства, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΠ΄ ΡƒΠ·ΠΊΠΈΠ΅, Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ области: Ρƒ бизнСсмСнов Π½Π΅Ρ‚ возмоТности Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² творчСский процСсс, Π° Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π΅Ρ‚ прСдставлСния ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… бизнСса.

Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ знания ΠΈ ΠΎΠΏΡ‹Ρ‚ β€” Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹, ΠΎΠ½ΠΈ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ нСсколько дисциплин ΠΈ сфСр Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ «ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ способности Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ» β€” это Π½Π΅ руководство ΠΊ овладСнию мастСрством, Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π£Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Π² Ρ‡Ρ‘ΠΌ Π²Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ сСбя Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½Ρ‹Ρ… вопросах. И ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ способности ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π²ΠΈΠ΄Π°ΠΌ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Для соврСмСнных бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ² особСнно Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ вопрос Π»ΠΈΠΊΠ²ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ бизнСсом ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ. БизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΡƒΡ…ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, способными ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Linux (ΠΈΠ»ΠΈ Π² macOS), Π½ΠΎ ΠΏΡ€ΠΈ этом ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности ΠΈΠ· Microsoft Office Π² Windows. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΈΡ€ Linux ΠΏΡƒΠ³Π°Π΅Ρ‚ Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² сфСрС бизнСса. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ ΠΈ Π² большСм количСствС вопросов, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ 20% ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 80% Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ΠΎΡ‚ ΠΌΠΎΠΈ 20%.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ соврСмСнныС бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ Linux

Благодаря своим open source корням, Linux Π²Ρ‹ΠΈΠ³Ρ€Π°Π» ΠΎΡ‚ Π²ΠΊΠ»Π°Π΄ΠΎΠ² тысяч Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π·Π° всё врСмя Π΅Π³ΠΎ сущСствования. Они построили ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСбС, Π½ΠΎ ΠΈ Ρ‚Π΅ΠΌ программистам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послСдовали Π·Π° Π½ΠΈΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ open source Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° создала эффСкт сСтСвой Π²Ρ‹Π³ΠΎΠ΄Ρ‹: Ρ‡Π΅ΠΌ большС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ строили ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‚Π΅ΠΌ большС Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΌΠΎΠ³Π»ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° эти ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получился ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ софт), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» написан Π½Π° Linux ΠΈ ΠΏΠΎΠ΄ Linux. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π² Windows. Один ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² β€” популярная систСма контроля вСрсий (VCS), которая называСтся git. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ софт ΠΏΠΎΠ΄ Windows, Π½ΠΎ ΠΎΠ½ΠΈ этого Π½Π΅ сдСлали. Они написали Π΅Π³ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, для Linux, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Linux β€” экосистСма, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты.

Если Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Windows Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π΄Π²ΡƒΠΌ основным ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ:

Если ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всё вмСстС, это Π²Ρ‹Π»ΡŒΠ΅Ρ‚ΡΡ Π² Ρ‚Ρ€Π°Ρ‚Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° пСрСписываниС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ доступны Π² Linux, ΠΎΠ½ΠΈ позволят ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок совмСстимости с ОБ. Π’ΡƒΡ‚ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ² β€” экосистСма Windows просто Π½Π΅ Π±Ρ‹Π»Π° Π·Π°Π΄ΡƒΠΌΠ°Π½Π° ΠΈ спроСктирована ΠΏΠΎΠ΄ Π½ΡƒΠΆΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ софта.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Linux.

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Linux: «ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°»

Shell (ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», консоль ΠΈΠ»ΠΈ командная строка) β€” это тСкстовый интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ машинС. На Linux, ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, язык ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ называСтся bash. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Windows-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² своём Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ «Π½Π°Π²Π΅ΡΡ‚ΠΈ-ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ» ΠΏΠΎ ΠΎΠΊΠ½Ρƒ, Linux-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ привязаны ΠΊ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅. Π₯ΠΎΡ‚ΡŒ этот ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π΄Π°Π»Ρ‘ΠΊ ΠΎΡ‚ СстСствСнного для Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚ бэкграунда Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠ»ΡŽΡΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Linux сильно ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. vBHJWpP. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля Ρ„ΠΎΡ‚ΠΎ. линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля-vBHJWpP. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° линукс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с нуля. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° vBHJWpP. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GNU/Linux (ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΈ Π·Π½Π°Ρ‚ΡŒ основы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ язык C хотя Π±Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π― посчитал бСссмыслСнным ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ языку C. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык C Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‚Ρ‡ΠΈ "Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ", Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° этой ΠΊΠ½ΠΈΠ³ΠΈ.

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΠ²

Π’ сравнСнии с достаточно Π·Ρ€Π΅Π»Ρ‹ΠΌ языком программирования, bash ΠΈΠΌΠ΅Π΅Ρ‚ всСго нСсколько основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚Π΅ это, остаток bash β€” простоС Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅. Π― ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽ понятнСй: Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² bash Π·Π½Π°Ρ‡ΠΈΡ‚ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ 20-30 ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΈΡ… часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

Linux каТСтся Π½Π΅ΠΏΡ€ΠΎΠ½ΠΈΡ†Π°Π΅ΠΌΡ‹ΠΌ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ касаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈΠ·-Π·Π° способа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (Π½Π΅ Π½Π°ΠΏΡ€ΡΠ³Π°ΡΡΡŒ) ΠΈΠ·Π²Π΅Ρ€Π³Π°ΡŽΡ‚ эзотСричСскиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌ захочСтся. ΠŸΡ€Π°Π²Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько дСсятков ΠΊΠΎΠΌΠ°Π½Π΄ β€” Π·Π° всСм Π±ΠΎΠ»Π΅Π΅ слоТным ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ (ΠΊΠ°ΠΊ ΠΈ всС смСртныС) ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Google.

ΠžΠΏΡƒΡΠΊΠ°Ρ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π·Π°Π³Π²ΠΎΠ·Π΄ΠΊΠΈ, стоящиС Π½Π° ΠΏΡƒΡ‚ΠΈ, Π²ΠΎΡ‚ Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ Π² bash.

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ синтаксис

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ синтаксису:

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ

ПолСзная информация Π£ нас Π΅ΡΡ‚ΡŒ курс ΠΏΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ систСмам. ЗарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π΅Π³ΠΎ бСсплатно. Π”Ρ€ΡƒΠ³ΠΈΠ΅ бСсплатныС курсы ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС.

STDIN / STDOUT

Всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² ΠΎΠΊΠ½Π΅ ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚Π΅ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ENTER), называСтся стандартным Π²Π²ΠΎΠ΄ΠΎΠΌ (STDIN).

Всё, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ тСкст ΠΈΠ· Ρ„Π°ΠΉΠ»Π°), называСтся стандартным Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ (STDOUT)

ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ (piping)

Pipe ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ STDOUT ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слСва ΠΎΡ‚ pipe ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² STDIN для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ справа ΠΎΡ‚ pipe.

Π‘ΠΈΠΌΠ²ΠΎΠ» «Π±ΠΎΠ»ΡŒΡˆΠ΅» ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ STDOUT ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слСва ΠΈ записываСт/пСрСзаписываСт Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» справа

ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ls > tmp.txt

Π”Π²Π° символа «Π±ΠΎΠ»ΡŒΡˆΠ΅» ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ STDOUT ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слСва ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ справа.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€: date >> tmp.txt

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ поиска (wildcards)

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tab

Bash часто Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сам, ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅, Ссли Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ TAB.

Однако, стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ zsh ΠΈΠ»ΠΈ fish для автозаполнСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ всС ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ слоТно. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, эти инструмСнты примСнят Π°Π²Ρ‚ΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° вашСй истории ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄.

Π’Ρ‹Ρ…ΠΎΠ΄

Иногда Π²Ρ‹ застрСваСтС Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π²Ρ‹ΠΉΡ‚ΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π΅ΡΡ событиС для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² Linux, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нСвСроятно Π΄Π΅ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚. Часто Π²Ρ‹Ρ…ΠΎΠ΄ происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, содСрТащСго q. Π₯ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ написано Π½ΠΈΠΆΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅.

Π§Ρ‚ΠΎ я помню ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ bash

Π­Ρ‚ΠΎ Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‡Π°Ρ‰Π΅ всСго Π² Linux (начиная ΠΎΡ‚ самых часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊ самым Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ). Как я ΡƒΠΆΠ΅ писал Ρ€Π°Π½ΡŒΡˆΠ΅, Π·Π½Π°Π½ΠΈΠ΅ всСго горстки ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ большой Π½Π°Π±ΠΎΡ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ssh @ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ машиной

htop (ΠΈΠ»ΠΈ top ) диспСтчСр Π·Π°Π΄Π°Ρ‡

wgetΠ·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π²Π΅Π±-страницу ΠΈΠ»ΠΈ Π²Π΅Π±-рСсурс

find вывСсти список всСго содСрТимого Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π΅Ρ‘ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ рСкурсивно

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΈ Π½Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ список ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ситуациях, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ситуации ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΠΎΠΉ процСсс Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ сСтСвой ΠΏΠΎΡ€Ρ‚). Π’ΠΎΡ‚ нСсколько нСстандартных ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ мСня всСгда ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ:

Никогда Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ: Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ говорят, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ постоянно ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° мСстС. Π Π°Π·Π²ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ β€” Π½Π° Π₯СкслСтС Π΅ΡΡ‚ΡŒ сотни курсов ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках ΠΈ тСхнологиях

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *