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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++. Π‘Π±ΠΎΡ€Π½ΠΈΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор Π”. БтСфСнс

НаиболСС Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ людьми, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ моя ΠΆΠ΅Π½Π° Π”Π°Ρ„Π½Π° (Daphne) ΠΈ ΠΌΠΎΠΈ Π΄Π΅Ρ‚ΠΈ ДТСсс (Jesse), Паскаль (Pascal) ΠΈ Π₯лоя (Chloe). НаписаниС ΠΊΠ½ΠΈΠ³ΠΈ это тяТСлый Ρ‚Ρ€ΡƒΠ΄, Π½ΠΎ Π΅Ρ‰Π΅ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‚Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ моя сСмья ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° мСня ΠΈ стойко Ρ‚Π΅Ρ€ΠΏΠ΅Π»Π° мою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎΠΏΠΎΠ·Π΄Π½Π°.

Π― Ρ‚Π°ΠΊΠΆΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ тСхничСских Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΡΠ΄Π΅Π»Π°Π²ΡˆΠΈΡ… эту ΠΊΠ½ΠΈΠ³Ρƒ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ. Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях, всСгда ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ, Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Π³Π»Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оцСнят ΡΡΠ½ΠΎΡΡ‚ΡŒ излоТСния ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Дэну Баксу (Dan Saks), Π£Π²Π΅ Π¨Π½ΠΈΡ‚ΠΊΠ΅Ρ€ (Uwe Schnitker) ΠΈ Дэвиду Π’ΠΈΠ·Ρƒ (David Theese).

НаконСц, я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠ΅Π³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½Π° Π“Π΅Π½Π½ΠΈΠΊΠ° (Jonathan Gennick) Π·Π° Π΅Π³ΠΎ всСгда ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΏΠΎ вопросам Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, стиля излоТСния ΠΈ Π·Π° Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

ΠžΡ‚ ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€Π° Диггинса (Christopher Diggins)

Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ ΠšΡ€ΠΈΡΠ° АнгСра (Kris Unger), Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½Π° Вурканиса (Jonathan Turkanis), Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½Π° Π“Π΅Π½Π½ΠΈΠΊΠ° (Jonathan Gennick) ΠΈ Π Π°ΠΉΠ°Π½Π° БтивСнса (Ryan Stephens) Π·Π° ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ прСдлоТСния ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ я ΠΌΠΎΠ³. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ большоС спасибо ΠΌΠΎΠ΅ΠΉ ΠΆΠ΅Π½Π΅ МСлани ΠšΠ°Ρ€Π±ΠΎΠ½Π½ΠΎ (Melanie Charbonneau) Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° сдСлала мою Тизнь свСтлСС.

ΠžΡ‚ Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½Π° Вурканиса (Jonathan Turkanis)

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΈ Π³Π»Π°Π²Ρ‹ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… коммСрчСских ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… Ρƒ мСня Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ вопросов, ΠΌΠΎΠΉ список благодарностСй Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π΅Π»ΠΈΠΊ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Π ΠΎΠ½Π° Π›ΠΈΡ…Ρ‚ΠΈ (Ron Liechty), Π“ΠΎΠ²Π°Ρ€Π΄Π° Π₯ΠΈΠ½Π½Π°Π½Ρ‚Π° (Howard Hinnant) ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² Π² Metrowerks Π·Π° ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° всС ΠΌΠΎΠΈ вопросы ΠΈ прСдоставлСниС ΠΌΠ½Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий CodeWarrior.

Π’Π°ΠΊΠΆΠ΅ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Boost.Build, особСнно Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€Π° ΠŸΡ€ΡƒΡΠ° (Vladimir Prus), Π Π΅Π½Π΅ Π ΠΈΠ²Π΅Ρ€Π° (Rene Rivera) ΠΈ Π”Π΅Π²ΠΈΠ΄Π° Абрамса (David Abrahams) β€” Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° ΠΌΠΎΠΈ вопросы, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π·Π° сборку систСмы компиляции Boost, которая сама ΠΏΠΎ сСбС стала Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ источником ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π³Π»Π°Π²Π΅ 1.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, спасибо Π’Π°Π»ΡŒΡ‚Π΅Ρ€Ρƒ Π‘Ρ€Π°ΠΉΡ‚Ρƒ (Walter Bright) ΠΈΠ· Digital Mars; Π“Ρ€Π΅Π³Ρƒ Комю (Greg Comeau) ΠΈΠ· Comeau Computing; Пи Π”ΠΆΠ΅ΠΉ ΠŸΠ»Π°Π³Π΅Ρ€Ρƒ (Π . J. Plauger) ΠΈΠ· Dinkumware; ΠšΠΎΠ»ΠΈΠ½Ρƒ Лапласу (Colin Laplace) ΠΈΠ· Bloodshed Software; Π­Π΄Ρƒ ΠœΠ°Π»Ρ€ΠΎΡŽ (Ed Mulroy) ΠΈ ΠŸΠ°Π²Π»Ρƒ Π’ΠΎΠ·Π΅Π½ΠΈΠ»Π΅ΠΊΡƒ (Pavel Vozenilek) ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ новостСй borland.public.*; Арноду Π”Π΅Π±Π΅Π½Π΅ (Arnaud Debaene) ΠΈ Π˜Π³ΠΎΡ€ΡŽ Π’Π°Π½Π΄Π΅Ρ‚Π½ΠΈΠΊΡƒ (Igor Tandetnik) ΠΈΠ· microsoft.public.vc.languages; Π­Ρ€Π½ΠΈ Π‘ΠΎΠΉΠ΄Ρƒ (Earnie Boyd), Π“Ρ€Π΅Π³Ρƒ ЧикарСсу (Greg Chicares), Адибу Π’Π°Ρ€Π°Π±Π΅Π½Ρƒ (Adib Taraben), Π”ΠΆΠΎΠ½Ρƒ Π’Π°Π½Π΄Π΅Π½Π±Π΅Ρ€Π³Ρƒ (John Vandenberg) ΠΈ Π›Π΅Π½Π½Π°Ρ€Ρ‚Ρƒ Π‘ΠΎΡ€Π³ΠΌΠ°Π½Ρƒ (Lennart Borgman) ΠΈΠ· списка рассылки MinGW/MSYS; ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€Ρƒ Π€Π΅ΠΉΠ»ΠΎΡ€Ρƒ (Christopher Faylor), Π›Π°Ρ€Ρ€ΠΈ Π₯ΠΎΠ»Π»Ρƒ (Larry Hall), Π˜Π³ΠΎΡ€ΡŽ ΠŸΠ΅Ρ‚Ρ‡Π°Π½ΡΠΊΠΈ (Igor Pechtchanski), Π”ΠΆΠΎΡˆΡƒΠ° Π”Π°Π½ΠΈΠ΅Π»ΡŽ Π€Ρ€Π°Π½ΠΊΠ»ΠΈΠ½Ρƒ (Joshua Daniel Franklin) ΠΈ Дэйву ΠšΠΎΡ€Π½Ρƒ (Dave Korn) ΠΈΠ· списка Cygwin; ΠœΠ°ΠΉΠΊΡƒ Π‘Ρ‚Π°ΠΌΠΏΡƒ (Mike Stump) ΠΈ Π”ΠΆΠ΅Ρ„Ρ€ΠΈ ΠšΠΈΡ‚ΠΈΠ½Π³Ρƒ (Geoffrey Keating) ΠΈΠ· списка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² GCC; ΠœΠ°Ρ€ΠΊΡƒ Π“ΡƒΠ΄Ρ…Π΅Π½Π΄Ρƒ (Mark Goodhand) ΠΈΠ· DecisionSoft ΠΈ Дэвиду Н. Π‘Π΅Ρ€Ρ‚ΠΎΠ½ΠΈ (David N. Bertoni) ΠΈΠ· apache.org.

Π― Ρ‚Π°ΠΊΠΆΠ΅ Π² Π΄ΠΎΠ»Π³Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ Π ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΌ ΠœΠ΅ΠΊΠ»Π΅Π½Π±ΡƒΡ€Π³ΠΎΠΌ (Robert Mecklenburg), Ρ‡ΡŒΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ Managing Projects with GNU make (O'Reilly) Π΄Π°Π»ΠΎ основу ΠΌΠΎΠ΅ΠΌΡƒ знакомству с GNU make.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ ΠŸΡ€ΡƒΡ (Vladimir Prus), ΠœΡΡ‚ΡŒΡŽ Вилсон (Matthew Wilson), Π Π°ΠΉΠ°Π½ Π‘Ρ‚ΠΈΠ²Π΅Π½c (Ryan Stephens) ΠΈ ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ Диггинс (Christopher Diggins) Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ€Π°Π½Π½ΠΈΡ… Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΎΠ² ΠΌΠΎΠΈΡ… тСкстов.

НаконСц, я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠ΅Π³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½Π° Π“Π΅Π½Π½ΠΈΠΊΠ° (Jonathan Gennick), мою ΠΆΠ΅Π½Ρƒ Π”ΠΆΠ΅Π½Π½ΠΈΡ„Π΅Ρ€ (Jennifer) ΠΈ ΠΌΠΎΠ΅Π³ΠΎ Π΄Π΅Π΄Π° Луиса Π‘. Гудмэна (Louis S. Goodman), Π½Π°ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎ мСня ΠΏΠΈΡΠ°Ρ‚ΡŒ.

Π“Π»Π°Π²Π° 1

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° C++

1.0. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² сборку

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

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° названия Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² Π² этой Π³Π»Π°Π²Π΅, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я снова ΠΈ снова Ρ€Π΅ΡˆΠ°ΡŽ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. И это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ имССтся большоС количСство способов сборки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π‘++, ΠΈ хотя я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… всС, я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ дСсяткС Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² я ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ - ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ статичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ сгруппированы ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ; сначала я Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽ сборку ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмы Boost (Boost.Build), Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (Integrated Development Environment (IDE), ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GNU make.

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

Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму сборки ΠΈΠ»ΠΈ IDE, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с чтСния Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² ΠΏΠΎ сборкС ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки: эти Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для понимания ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π² дальнСйшСй части этой Π³Π»Π°Π²Ρ‹.

Базовая тСрминология

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

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

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, β€” это просто любая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. ДинамичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Ρ‚Π°ΠΊΠΆΠ΅ называСмая совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° исполняСмый Ρ„Π°ΠΉΠ», Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Она состоит ΠΈΠ· Ρ‚Π΅Π»Π° машинного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ загруТаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ послС запуска прилоТСния, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими прилоТСниями. Π’ Windows динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ (dynamic link libraries (DLL)).

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ статичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит исполняСмый Ρ„Π°ΠΉΠ», Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ сборкС исполняСмого Ρ„Π°ΠΉΠ»Π°. Однако динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит исполняСмый Ρ„Π°ΠΉΠ», Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ Π² систСмС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΈ запускС исполняСмого Ρ„Π°ΠΉΠ»Π°.

Π’Π°Π±Π»ΠΈΡ†Π° 1.1 ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ связанныС с этими Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Microsoft Windows ΠΈ Unix. Когда я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ Ρ„Π°ΠΉΠ», ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π² Windows ΠΈ Unix Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, я ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠΏΡƒΡΠΊΠ°ΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Ссли ΠΎΠ½ΠΎ ясно ΠΈΠ· контСкста.


Π’Π°Π±Π». 1.1. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Windows ΠΈ Unix

Π’ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° Windows Mac OS X Π”Ρ€ΡƒΠ³ΠΈΠ΅ Unix ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ .obj .o .o БтатичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .lib .a .a ДинамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ .dll .dylib .so Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ .exe НСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ НСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Π’ этой Π³Π»Π°Π²Π΅, ΠΊΠΎΠ³Π΄Π° я Π³ΠΎΠ²ΠΎΡ€ΡŽ Unix, я Ρ‚Π°ΠΊΠΆΠ΅ имСю Π² Π²ΠΈΠ΄Ρƒ ΠΈ Linux.

ΠŸΡ€ΠΈ сборкС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· этой Π³Π»Π°Π²Ρ‹ ваши инструмСнты Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ большоС количСство Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ, Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π». 1.1. Если я Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹. Если Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡŽ.

IDE ΠΈ систСмы сборки

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ β€” это инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для запуска ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ bash Π² Unix ΠΈΠ»ΠΈ cmd.exe Π² Microsoft Windows. ИмСна Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ вся ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ нСобходимая настроСчная информация ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² компилятор, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΊ тСкст Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Однако Π²Ρ‹Π·ΠΎΠ² этих ΠΊΠΎΠΌΠ°Π½Π΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ довольно ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»Π΅Π½. Π”Π°ΠΆΠ΅ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТно Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ инструмСнта ΠΈ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ исходныС ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ трСбуСтся ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ статичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ трСбуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ трСбуСтся ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ. Если Π²Ρ‹ пСрСсобСрСтС большС Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Π΅ΠΌ трСбуСтся, Π²Ρ‹ зря ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ врСмя, Π° Ссли пСрСсобСрСтС Π½Π΅ всС Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ошибки ΠΏΡ€ΠΈ сборкС ΠΈΠ»ΠΈ нСработоспособноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ случаС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π‘++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ тысячи ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ исходныС Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, сборка ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки просто Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.