8-900-374-94-44
[email protected]
Slide Image
МСню

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ c: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС C

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° Π»ΡƒΡ‡ΡˆΠΈΡ… Π² 2022 Π³ΠΎΠ΄Ρƒ

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ Π’ΠΈΠΌΠΎΡ„Π΅Π΅Π² На Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 8 ΠΌΠΈΠ½ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΎΠ² 4.2ΠΊ. ОбновлСно

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ – это ΠΏΠΎ сути ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, которая занимаСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ чСловСчСской Π»ΠΎΠ³ΠΈΠΊΠΈ языка программирования Π² понятный машинС Π½Π°Π±ΠΎΡ€ инструкций. Π—Π° нСсколько дСсятилСтий Π±Ρ‹Π»Π° построСна армия компиляторов Π΄Π°ΠΆΠ΅ для ΡƒΠ·ΠΊΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ΄Π½ΠΎΠΊΠΎΡ€Π΅Π½Π½Ρ‹Ρ… языков C ΠΈ C++. Какой компилятор C Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ дСсятилСтии XXI Π²Π΅ΠΊΠ°?

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ компилятор
  2. IDE ΠΈ компилятор: различия
  3. Как Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅
  4. Π’ΠΎΠΏ 7 Π»ΡƒΡ‡ΡˆΠΈΡ… компиляторов для C/C++
  5. Visual Studio Code
  6. Dev-C++
  7. Microsoft Visual C++ Community Version
  8. Intel C++
  9. AMD x86 Open64 Compiler Suite
  10. C++ Compiler Explorer
  11. Wandbox
  12. Π’Ρ‹Π²ΠΎΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ компилятор

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ – это ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎΡ‚ процСсс Ρ‚Π°ΠΊ ΠΈ называСтся – компиляция ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ состоит ΠΈΠ· Ρ‚Ρ€ΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² транзисторов. Как Π½Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΎΠΊΡΠ°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этими Π°Ρ‚ΠΎΠΌΠ°ΠΌΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π΄Π²ΡƒΡ… чисСл: 0 ΠΈ 1. ΠžΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ зависит, Ρ‡Ρ‚ΠΎ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ CPU. Π§Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ слоТно сразу Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ бСсконСчной ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π½ΠΎΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. Намного ΠΏΡ€ΠΎΡ‰Π΅ свСсти Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ языка программирования, Π° Ρ€ΡƒΡ‚ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΠΎΡ€ΡƒΡ‡ΠΈΡ‚ΡŒ компилятору.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

IDE ΠΈ компилятор: различия

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ – это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°. НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ программисты ΠΈ ΠΊΠΎΠ΄ Π½Π°Π±ΠΈΡ€Π°Π»ΠΈ Π² стандартном тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. Но вскорС стало ясно: Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ срСдства ΠΈ инструмСнты Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π’Π°ΠΊ появилось понятиС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ – IDE ΠΈΠ»ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, комплСксного Π½Π°Π±ΠΎΡ€Π°:

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

Как Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

Какой компилятор для ΠΊΠΎΠ΄Π° Π½Π° C ΠΈ C++ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, зависит ΠΎΡ‚ сцСнария примСнСния. Помимо ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½-компиляторы. Π’Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ.

Π˜Π·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° отличаСтся ΠΎΡ‚ IDE Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ модулями. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΎΠ»Π΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для сСбя тСкстовой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ. Полная свобода Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ: ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Ρ€Ρ‹Π½ΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Однако большиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ слоТно вСсти, Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ софтом.

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

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

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

Π’Π°ΠΊΠΈΠ΅ Π²Π΅Π±-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅. МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСскольким программистам, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡΡΡŒ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ компилятор стоит, ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡΡΡŒ ΠΎΡ‚ спСцифики Π·Π°Π΄Π°Ρ‡ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’ΠΎΠΏ 7 Π»ΡƒΡ‡ΡˆΠΈΡ… компиляторов для C/C++

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

Visual Studio Code

VS Code ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ тСкстовой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, доступный для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Windows, macOS ΠΈ Linux. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ устанавливаСтся ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½. Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ IDE.

Π­ΠΌΠ±Π»Π΅ΠΌΠ° ΠΈ интСрфСйс VS Code

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ достоинства:

  • ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ;
  • Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² – это Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ срСды ΠΏΠΎΠ΄ Π»ΡŽΠ±Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ;
  • компилятор отличаСтся высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ;
  • Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ приятным интСрфСйсом.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ: подсвСтка синтаксиса ΠΈ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π‘Π°ΠΌΡ‹ΠΉ ΠΆΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ бонус – систСма IntelliSense, которая ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ поиск ΠΈ устранСниС ошибок, обСспСчиваСт связь с API ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ связанных с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

VS Code – Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΉΡΡ инструмСнт, Π°ΠΊΠΊΡƒΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ всС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ соврСмСнных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ программирования Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅.

Dev-C++

НавСрноС, самая распространСнная IDE для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° языках C ΠΈ C++.

Π’Π°ΠΊ выглядит Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΎΠΊΠ½ΠΎ Dev-C++

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² индустрии с 1998 Π³ΠΎΠ΄Π° ΠΈ остаСтся вострСбованной Π΄ΠΎ сих ΠΏΠΎΡ€. БпСциалисты ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ особСнно цСнят эту срСду Π·Π° ряд ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… свойств:

  • нСбольшиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ дистрибутива;
  • ΡƒΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅;
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска сторонних компиляторов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Cygwin ΠΈΠ»ΠΈ Mingw;
  • Π³ΠΈΠ±ΠΊΠΎ настраиваСмый тСкстовой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€;
  • эргономичный интСрфСйс управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

ЕдинствСнный ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹ΠΉ нСдостаток – IDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Microsoft. Однако ΠΈ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эмуляторы.

Π­Ρ‚ΠΎ интСгрированная срСда ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ выдСляСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ самых Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… языков программирования: содСрТит компиляторы C# (си ΡˆΠ°Ρ€ΠΏ), Π° Ρ‚Π°ΠΊΠΆΠ΅ Python ΠΈ Node.js.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Microsoft Visual C++

К услугам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

  • тСкстовой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ многооконности;
  • ΠΌΠΎΡ‰Π½Ρ‹ΠΉ компилятор;
  • систСма тСстирования ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Для поиска ошибок, автодополнСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΡ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ возмоТностСй примСняСтся IntelliSense.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ просто популярна, Π½ΠΎ поддСрТиваСтся гигантским ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ. Π—Π½Π°Ρ‡ΠΈΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ вопросы ΠΏΠΎ эксплуатации ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π° этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ….

Intel C++

Π­Ρ‚ΠΎΡ‚ компилятор Π±ΡƒΠ΄Π΅Ρ‚ интСрСсСн Ρ‚Π΅ΠΌ, Π² Ρ‡ΡŒΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ процСссоры ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ.

Π’ΠΈΠ΄ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области компилятора Intel C++

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Intel. Благодаря использованию SIMD-инструкций ΠΈ Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅ΠΉ систСмы ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π½Π° Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сохраняСтся Π΄Π°ΠΆΠ΅ Π² Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ просСданиС Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

AMD x86 Open64 Compiler Suite

Π­Ρ‚ΠΎΡ‚ компилятор C/C++ дСмонстрируСт Ρ€Π΅ΠΊΠΎΡ€Π΄Π½ΡƒΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π° процСссорах AMD ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности ΠΏΠΎ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, работая ΠΈ с Fortran. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ вСрсии дистрибутива для всСх самых популярных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

C++ Compiler Explorer

Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π° сСрвис компилятор. Плюс Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Достаточно ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ собираСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Доступны Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии компилирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MIPS GCC, GCC-5, Clang ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ДопускаСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ компилятора ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ источников. Π­Ρ‚ΠΎ сильно ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сборки.

Π’Π°ΠΊ выглядит Compiler Explorer, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² Mozilla Firefox

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сСрвис ΠΈΡ‰Π΅Ρ‚ ошибки, позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ отобраТСния ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ участки исходника с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ мСстами Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ ассСмблСрС.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Compiler Explorer Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ€Π°ΠΆΠ°Π΅Ρ‚. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈΠ΄Π΅Ρ‚ сразу ΠΏΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ – это мгновСнная обратная связь.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ большС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ IDE ΠΈ выглядит ярко Π½Π° Ρ„ΠΎΠ½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΠ΄ΠΊΡƒΠΏΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования.

Wandbox

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΠ½Π»Π°ΠΉΠ½-сСрвис с Π±ΡƒΠΊΠ΅Ρ‚ΠΎΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ с новСйшСй вСрсиСй C++17. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²ΠΎΡΡ‚ΡŒ, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ привязки клавиш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, прСдусмотрСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° вСрсий: Clang, GCC, ZAPCC ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ….

БСрвис Wandbox Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Chromium

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ прСимущСство – ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΊΡ€ΠΎΠΌΠ΅ стандартной: Boost, MassagePack, Sprout ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ….

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, послС компиляции Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² пСсочницС, которая Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Ρ„Π°ΠΉΠ»ΠΎΠ².

БСрвис Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π΅Π½ для быстрой компиляции ΠΊΠΎΠ΄Π° ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ тСстовая ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°.

Π₯отя тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ подсвСчиваСт синтаксис ΠΈ Π½Π΅ ΠΈΡ‰Π΅Ρ‚ ошибки, Wandbox ΠΏΠΎΠ΄ΠΊΡƒΠΏΠ°Π΅Ρ‚ простотой. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сСрвис Π΄Π°ΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Π° рСгистрация.

Π’Ρ‹Π²ΠΎΠ΄

НСльзя Π½Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков. Π­Ρ‚ΠΎ ΠΈ популярныС Java, Python, Ruby, Perl, Swift, ΠΈ Π½ΠΈΡˆΠ΅Π²Ρ‹Π΅ Pascal, Lisp ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

На этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ. ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ компиляторы ΠΈ IDE – Π²Ρ‹Π±ΠΎΡ€ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² программистов ΠΈ студСнтов ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ΄ Π½Π° C ΠΈ C++. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ самый ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ бСсплатно Π½Π΅ лишним Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° – Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Бписок Π»ΡƒΡ‡ΡˆΠΈΡ… компиляторов Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΠΈΡ€Π΅. Доступна масса Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ самыС извСстныС ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅.

Β 

Visual Studio Code

1

Microsoft Visual C++ Community Version

1

Intel C++

1

Dev-C++

AMD x86 Open64 Compiler Suite

C++ Compiler Explorer

Wandbox

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, состоящих ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π―Π·Ρ‹ΠΊ Π‘ΠΈ

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, состоящих ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π―Π·Ρ‹ΠΊ Π‘ΠΈ — руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π’ΠΈΠΊΠΈΠ§Ρ‚Π΅Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊ Π‘ΠΈ — руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…
ΠŸΡ€Π°Ρ‚Π° Π‘Ρ‚ΠΈΠ²Π΅Π½

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, состоящих ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Β Β Β Β Β ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ использования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», послС Ρ‡Π΅Π³ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, содСрТащСйся Π² этом Ρ„Π°ΠΉΠ»Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½Π° состояла ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Β Β Β Β Β Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #include. Если ΠΎΠ΄Π½Π° функция содСрТится Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ file1.с, Π° вторая ΠΈ Ρ„Π°ΠΉΠ»Π΅ file2.c, помСститС эту Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π² Ρ„Π°ΠΉΠ» filel.c:

#include «file2.c»

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ #include находится Π² Π³Π». 11. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² большСй стСпСни систСмнозависимыми. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:Β Β 

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

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

3.8.3. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра

3. 8.3. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра ΠŸΡ€ΠΈ установкС ΠΈΠ· RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ядро, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ скомпилированы Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ с ядром, Ρ‚Π°ΠΊ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΎΠ΅ ядро ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅, Π½ΠΎ позволяСт ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ простой Π·Π°ΠΌΠ΅Π½ΠΎΠΉ

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ сконфигурировали ядро систСмы, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² make xconfig ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π² Π½Π°Ρ‡Π°Π»Π΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ядро ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:# make dep# make bzImage# make modules# make

20.5. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра

20.5. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ядра 20.5.1. Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ядро? Linux развиваСтся быстрСС любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. РСгулярно ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ вСрсии ядра, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр, Π΅Π΄Π²Π° успСл Π²Ρ‹ΠΉΡ‚ΠΈ дистрибутив Fedora Core 4 Π½Π° ядрС 2.

6.11, Π° Π½Π° www.kernel.org ΡƒΠΆΠ΅ Π»Π΅ΠΆΠΈΡ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ

28.2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ модуля

28.2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ модуля ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ„Π°ΠΉΠ» module.c. Для этого понадобится установлСнный компилятор gcc, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ исходныС тСксты ядра. Если Π²Ρ‹ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ ΠΊΠ½ΠΈΠ³Ρƒ Π΄ΠΎ этой Π³Π»Π°Π²Ρ‹, Ρ‚ΠΎ Ρƒ вас ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ установлСны ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹:1.Β cpp β€” прСпроцСссор cpp;2.Β binutils β€” Π½Π°Π±ΠΎΡ€

3.4.3. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

3.4.3. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, исходныС ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Ρ…ΠΈΠ²Π° с «Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ» -.tar.gz. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ принято Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/src. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для распаковки Π°Ρ€Ρ…ΠΈΠ²Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:sucd /usr/srcgunzip Π°Ρ€Ρ…ΠΈΠ².tar.gztar xvf

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

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π”Π°ΠΆΠ΅ послС появлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставляли собой ΡƒΠΆΠ΅ скомпилированныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, компиляция Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ ΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… остаСтся основным срСдством установки. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ появились Π²

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

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

Π‘ΠΎΠ²Π΅Ρ‚ 46. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π‘ΠΎΠ²Π΅Ρ‚ 46. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Часто говорят, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ уровня абстракции языков высокого уровня ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сниТСнию эффСктивности сгСнСрированного ΠΊΠΎΠ΄Π°. АлСксандр Π‘Ρ‚Π΅ΠΏΠ°Π½ΠΎΠ², ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚Π΅Π»ΡŒ STL, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» нСбольшой комплСкс

ΠŸΠΎΡ‡Π΅ΠΌΡƒ компиляция?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ компиляция? Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, пользовавшиСся языком БСйсик, ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒΡΡ, Π·Π°Ρ‡Π΅ΠΌ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ шагов для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ способ компиляции Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ). Но, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²

4.4.7. Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

4.4.7. Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π’Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° происходит, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° (ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅) ΠΏΠΎΡ‚ΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ события, наступлСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ зависит ΠΎΡ‚ дСйствий ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². НапримСр, Ссли ΠΏΠΎΡ‚ΠΎΠΊ A ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ измСнСния

Условная компиляция

Условная компиляция Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ условной компиляциСй. Π­Ρ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· процСсса компиляции ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ части исходного Ρ„Π°ΠΉΠ»Π° посрСдством ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий (константных

12.3.5. АдаптСры Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

12. 3.5. АдаптСры Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ имССтся Ρ‚Π°ΠΊΠΆΠ΅ ряд Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для спСциализации ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. АдаптСры – это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ классы, Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Π΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅

1.1.2 ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

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

19.11.2. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

19.11.2. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠœΡ‹ ΡƒΠΆΠ΅ рассматривали, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ систСмныС сообщСния.А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ снова описанной Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½ΠΎ Π² этом случаС

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C: Π·Π° кулисами

C β€” это язык срСднСго уровня, ΠΈ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ компилятор для прСобразования Π΅Π³ΠΎ Π² исполняСмый ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° нашСй машинС.

Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C?
НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π° машинС Ubuntu с компилятором gcc.

  • Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ создаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ сохраняСм Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ имя_Ρ„Π°ΠΉΠ»Π°.c
  $ vi имя_Ρ„Π°ΠΉΠ»Π°.c  
  • На схСмС справа ΠΏΠΎΠΊΠ°Π·Π°Π½Π° простая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для слоТСния Π΄Π²ΡƒΡ… чисСл.

  • Π—Π°Ρ‚Π΅ΠΌ скомпилируйтС Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΠΈΠΆΠ΅.
  $ gcc -Wall имя_Ρ„Π°ΠΉΠ»Π°.c –o имя_Ρ„Π°ΠΉΠ»Π°  
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -Wall Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ сообщСния компилятора. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ рСкомСндуСтся для создания Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -o ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания ΠΈΠΌΠ΅Π½ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Если ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эту ΠΎΠΏΡ†ΠΈΡŽ, Ρ‚ΠΎ создаСтся Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.out.

  • ПослС создания исполняСмого Ρ„Π°ΠΉΠ»Π° компиляции ΠΌΡ‹ запускаСм сгСнСрированный исполняСмый Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.
  $ ./filename  

Π§Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ процСсса компиляции?
ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ C Π² исполняСмый Ρ„Π°ΠΉΠ». БущСствуСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа прСвращСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C Π² исполняСмый Ρ„Π°ΠΉΠ»:

  1. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
  2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ
  3. Π‘Π±ΠΎΡ€ΠΊΠ°
  4. БвязываниС

Выполняя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ всС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ вмСстС с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. .

  $gcc -Wall -save-temps имя_Ρ„Π°ΠΉΠ»Π°.c –o имя_Ρ„Π°ΠΉΠ»Π°  

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ снимкС экрана ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ всС сгСнСрированныС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотрим, Ρ‡Ρ‚ΠΎ содСрТат эти ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π­Ρ‚ΠΎ пСрвая Ρ„Π°Π·Π°, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ исходный ΠΊΠΎΠ΄. Π­Ρ‚ΠΎΡ‚ этап Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:Β Β 

  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ макросов
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².
  • Условная компиляция

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ сохраняСтся Π² Ρ„Π°ΠΉΠ»Π΅ имя_Ρ„Π°ΠΉΠ»Π°.i . Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ filename.i: using $vi filename.i Β Β 
Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π΅ исходный Ρ„Π°ΠΉΠ» Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ большим количСством ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ наш ΠΊΠΎΠ΄ сохраняСтся.
Анализ:  

  • printf Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ содСрТит a + b, Π° Π½Π΅ add(a, b), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ макросы Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈΡΡŒ.
  • ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.
  • #include отсутствуСт, вмСсто этого ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π˜Ρ‚Π°ΠΊ, Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π±Ρ‹Π»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² наш исходный Ρ„Π°ΠΉΠ».

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом являСтся компиляция filename.i ΠΈ созданиС Ρ„Π°ΠΉΠ»Π°; ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ скомпилированный Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» filename.s . Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» находится Π² инструкциях уровня сборки. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° этот Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ $vi filename.s Β 

Π‘Π½ΠΈΠΌΠΎΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ написан Π½Π° языкС ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ассСмблСр ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚.

Π‘Π±ΠΎΡ€ΠΊΠ°
На этом этапС имя Ρ„Π°ΠΉΠ»Π°.s бСрСтся Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ прСобразуСтся ассСмблСром Π² имя_Ρ„Π°ΠΉΠ»Π°.o . Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит инструкции машинного уровня. На этом этапС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ прСобразуСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык, Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ printf(), Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ. Π”Π°Π²Π°ΠΉΡ‚Π΅ просмотрим этот Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ $vi filename.o Β 

Β 

БвязываниС

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

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ GCC ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выполняСт Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ, поэтому printf() динамичСски компонуСтся Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ этому, этому ΠΈ этому для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ статичСских ΠΈ динамичСских ссылках.
Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ прСдоставлСна ​​ Π’ΠΈΠΊΠ°ΡˆΠ΅ΠΌ ΠšΡƒΠΌΠ°Ρ€ΠΎΠΌ . ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, обсуТдаСмой Π²Ρ‹ΡˆΠ΅.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компиляция C?. Π§Ρ‚ΠΎ происходит Π·Π° кадром… | by Brennan D Baraban

Π₯ΠΎΡ‚Π΅Π» Π±Ρ‹ я Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ GCC прСдставляСт собой взрослого Π±Ρ‹ΠΊΠ°, Π²Ρ‹Π»ΡƒΠΏΠ»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΈΠ· яйца. По https://gcc.gnu.org/img/gccegg.svg [GFDL (http://www.gnu.org/copyleft/fdl.html) ΠΈΠ»ΠΈ CC-BY-SA-3.0 (http://creativecommons. org/licenses/by-sa/3.0/)], Ρ‡Π΅Ρ€Π΅Π· Викисклад.

Для Ρ‚Π΅Ρ… ΠΈΠ· нас, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚ написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C, gcc , вСроятно, знакомая ΠΊΠΎΠΌΠ°Π½Π΄Π°. Быстрая ΠΊΠΎΠΌΠ°Π½Π΄Π° gcc ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ Ρ„Π°ΠΉΠ» C (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ с ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠΌ .c ) Π² исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для запуска Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Ρ‚ΠΎ происходит Π·Π° кулисами, ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌΠΈ шагами, ΠΊΠΎΠ³Π΄Π° gcc Π±Π΅Ρ€Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠ°ΠΊ Ρ‚Ρ€ΡŽΠΊ Π“ΠΎΠ±Π° Π‘Π»ΡƒΡ‚Π°?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://giphy.com/gifs/arrested-development-gob-bluth-excited-n0WvhHFTpihk4

Π―Π·Ρ‹ΠΊ программирования C называСтся ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ компиляторами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСводят исходный ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡˆΠΈΠ½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅).

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ компиляторов GNU (GCC) являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… компиляторов для языка C. ВсС Π²Π΅Ρ€Π½ΠΎ, этот ΡΠ±ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ с Ρ‚ΠΎΠ»ΠΊΡƒ, нСвСроятный, вСличСствСнный, взрослый яйцСвидный Π±Ρ‹ΠΊ прСдставляСт собой ΠΌΠΎΡ‰Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ C Π² простыС Π² использовании исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. На самом Π΄Π΅Π»Π΅ C β€” лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… GCC, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ C++, Fortran ΠΈ Go. БСгодня GCC являСтся стандартным компилятором для ΠΌΠ½ΠΎΠ³ΠΈΡ… Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Linux.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ исходный ΠΊΠΎΠ΄ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа β€” ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, компиляция, сборка ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. По ΠΌΠ΅Ρ€Π΅ продвиТСния ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ main.c , которая, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, прСдставляСт собой ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C, которая ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π² ΠΌΠ°ΠΊΡ€ΠΎΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ сначала Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΊ компиляции Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° прСпроцСссор удаляСт ΠΈΠ· ΠΊΠΎΠ΄Π° всС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ρ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² C Π½Π° /* */ ΠΈΠ»ΠΈ // . Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, прСпроцСссор Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², связанныС Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² C с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксиса #include "example_header.h" . НаконСц, всС ΠΌΠ°ΠΊΡ€ΠΎΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ значСниями.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСпроцСссора, запустив gcc с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -E , которая подавляСт процСсс компиляции послС этого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шага:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ прСпроцСссор ΡƒΠ΄Π°Π»ΠΈΠ» main.c своих ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΏΡ€ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ ΠΌΠ°ΠΊΡ€ΠΎΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ MESSAGE Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

ПослС ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вновь ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» пСрСдаСтся компилятору. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π±Π΅Ρ€Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ассСмблСрного ΠΊΠΎΠ΄Π°. АссСмблСрный ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ язык ассСмблСра (часто сокращСнно asm) β€” это язык программирования высокого уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт ΠΊΠΎΠ΄ программирования с инструкциями машинного ΠΊΠΎΠ΄Π° Π΄Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ дСталях ассСмблСрного ΠΊΠΎΠ΄Π° здСсь.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ процСсс компиляции Π½Π° этом Π²Ρ‚ΠΎΡ€ΠΎΠΌ этапС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° main.c с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ gcc -c . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽΡΡ, ΠΏΠΎ большСй части Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ ΠΌΠ΅ΡˆΠ°Π½ΠΈΠ½Ρƒ ассСмблСрного ΠΊΠΎΠ΄Π°:

ΠžΡ‚ компилятора Π½ΠΎΠ²Ρ‹ΠΉ ассСмблСрный ΠΊΠΎΠ΄ пСрСдаСтся ассСмблСру. АссСмблСр Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΠ· Π΅Π³ΠΎ названия β€” ΠΎΠ½ ассСмблируСт ΠΊΠΎΠ΄ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’Π°ΠΌ, Π³Π΄Π΅ ассСмблСрный ΠΊΠΎΠ΄ прСдставляСт собой соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ прСдставляСт собой чистый ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ здСсь.

АссСмблСрный ΠΊΠΎΠ΄ нашСго Ρ„Π°ΠΉΠ»Π° main.c Π½Π΅ Π±Ρ‹Π» достаточно Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ для мСня. Запустим gcc с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -S для остановки компилятора Π½Π° этапС сборки:

Ну Ρ…ΠΎΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΊΡ€Π°ΡΠΈΠ²ΡˆΠ΅?

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ, скомпилированный ΠΈ собранный Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π³ΠΎΡ‚ΠΎΠ² для прСобразования Π² исполняСмый Ρ„Π°ΠΉΠ». Для этого компилятор Π΄Π΅Π»Π°Π΅Ρ‚ послСдний шаг ΠΈ отправляСт ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π΅Ρ€Π΅Ρ‚ всС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ связываСт ΠΈΡ… вмСстС Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ».

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° main.c компилируСтся Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ссылок ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², поэтому ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сама Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π° Π² исполняСмый Ρ„Π°ΠΉΠ». Π£Π²Ρ‹, для Ρ„ΠΈΠ½Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ запустим ΠΏΠΎΠ»Π½Ρ‹ΠΉ шСбанг (здСсь Π½Π΅ подразумСваСтся ссылка Π½Π° вычислСния), gcc main.c Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ†ΠΈΠΉ, для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, компиляции, сборки ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

… Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ?

Π‘Π΅Π· указания ΠΈΠΌΠ΅Π½ΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π° (Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ -o ), ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ GCC сохраняСт ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скомпилированный исполняСмый Ρ„Π°ΠΉΠ» Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.out . Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ./a.out , которая запускаСт исполняСмый Ρ„Π°ΠΉΠ» Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅:

И вуаля! [Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ здСсь ΠΊΡ€ΠΈΡ‡Π°Ρ‰ΡƒΡŽ Π² уТасС Π¨Π΅Π»Π»ΠΈ Π”ΡŽΠ²Π°Π»ΡŒ.]

Бсылки:

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ компиляторов GNU — ВикипСдия

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ компиляторов GNU (GCC) β€” это систСма компиляторов, созданная ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ GNU, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ программы…

en.wikipedia.org

Бписок компиляторов — ВикипСдия

На этой страницС пСрСчислСны всС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ компиляторы, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ компиляторов, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹, трансляторы, ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ основы…

en.

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

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