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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² срСдС Linux. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 11

Автор Майкл ДТонсон

На man-страницах ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ описаниС этих ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΡ†ΠΈΠΉ, здСсь Π½Π΅ упомянутых.

Π“Π»Π°Π²Π° 5

ΠžΠΏΡ†ΠΈΠΈ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ gcc

Для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования gcc, стандартного компилятора Π‘ для Linux, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, gcc Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ язык Π‘. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡΡΡŒ ANSI-стандарта этого языка, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ gcc просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ для понимания Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Linux.

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

Π‘Ρ‚Ρ€Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΠ±Π»ΡŽΡΡ‚ΠΈ ISO-стандарт Π‘ вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π² связи с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π‘ являСтся Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ языком, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ситуации, ΠΊΠΎΠ³Π΄Π° стандартныС срСдства нСдостаточно Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ области, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ gcc: взаимодСйствиС с ассСмблСрным ΠΊΠΎΠ΄ΠΎΠΌ (эти вопросы Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ адрСсу http://www.delorie.com/djgpp/doc/brennan/) ΠΈ сборка совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (см. Π³Π»Π°Π²Ρƒ 8). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π² систСмных Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ….

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сущСствуСт Π΅Ρ‰Π΅ мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ этим Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ gcc Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Texinfo.

5.1. ΠžΠΏΡ†ΠΈΠΈ gcc

gcc ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ мноТСство ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ†ΠΈΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС, Π½Π΅ Ρ‚Π°ΠΊ Π²Π΅Π»ΠΈΠΊ, ΠΈ Π² этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ Π΅Π³ΠΎ рассмотрим.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΡ†ΠΈΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ опциям Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов, gcc Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ своим опциям, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· info gcc (man gcc Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ man-страницы Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ часто, ΠΊΠ°ΠΊ докумСнтация Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Texinfo).

-ΠΎ имя_Ρ„Π°ΠΉΠ»Π° Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² этом Π½Π΅Ρ‚ нСобходимости, Ссли осущСствляСтся компиляция Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ происходит подстановка имя_Ρ„Π°ΠΉΠ»Π°.с Π½Π° имя_Ρ„Π°ΠΉΠ»Π°.ΠΎ. Однако Ссли Π²Ρ‹ создаСтС исполняСмый Ρ„Π°ΠΉΠ», ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΏΠΎ историчСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ) ΠΎΠ½ создаСтся ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π°.out. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² случаС, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. -с ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ исходный Ρ„Π°ΠΉΠ», ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π° создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΈ использовании make компилятор gcc ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ вызываСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°; Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² случаС возникновСния ошибки Π»Π΅Π³Ρ‡Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ смог ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Однако Ссли Π²Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, часто Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ gcc указываСтся мноТСство Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ случаС, Ссли ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ мноТСства Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ». НапримСр, вмСсто gcc -с -ΠΎ Π°.ΠΎ Π°.с b.с ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ gcc -с -o a.o b.c. -Dfoo ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ прСпроцСссорныС макросы Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, потрСбуСтся ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ символы, Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅. НапримСр, ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ строки слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ употрСблСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… строки символов ". Π’ΠΎΡ‚ Π΄Π²Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ употрСбляСмых способа: '-Dfoo="bar"' ΠΈ -Dfoo=\"bar\". ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ссли Π² строкС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° рассматриваСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. -IΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ДобавляСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² список ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… производится поиск Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². -LΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ДобавляСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² список ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… производится поиск Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, gcc Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, Π° Π½Π΅ статичСским, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅. -lfoo ВыполняСт ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ libfoo. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅, gcc ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ с совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ (libfoo.so), Π° Π½Π΅ статичСскими (libfoo.a). ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ поиск Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ всСх пСрСчислСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ пСрСчислСны. Поиск Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ всС искомыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. -static ВыполняСт ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ с Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π‘ΠΌ. Π³Π»Π°Π²Ρƒ 8. -g, -ggdb Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠžΠΏΡ†ΠΈΡ -g заставляСт gcc Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠžΠΏΡ†ΠΈΡ -ggdb ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ количСства ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² силах ΠΏΠΎΠ½ΡΡ‚ΡŒ лишь ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ gdb. Если дисковоС пространство ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π΄ΠΈ скорости ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ -g. Π’ этом случаС, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, Π° Π½Π΅ gdb. Для максимально ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ -ggdb. Π’ этом случаС gcc ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ максимально ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для gdb. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° компиляторов, gcc ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Однако трассировка Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сопряТСна со слоТностями, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΎ врСмя выполнСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€Ρ‹ΠΆΠΊΠΈ ΠΈ пропуски Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ оТидалось, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ способ выполнСния ΠΊΠΎΠ΄Π°. -O, -On ЗаставляСт gcc ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, gcc выполняСт нСбольшой объСм ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ; ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ числа (n) осущСствляСтся оптимизация Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. НаиболСС распространСнный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ β€” 2; Π² настоящСС врСмя Π² стандартной вСрсии gcc самым высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся 3. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ -O2 ΠΈΠ»ΠΈ -O3; -O3 ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ прилоТСния, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли это ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Если для вашСго прилоТСния Π²Π°ΠΆΠ½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ дисковоС пространство, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -Os, которая Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π° счСт увСличСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. gcc Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° примСняСтся хотя Π±Ρ‹ минимальная оптимизация (-O). -ansi ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° языкС Π‘ всСх стандартов ANSI (X3.159-1989) ΠΈΠ»ΠΈ ΠΈΡ… эквивалСнта ISO (ISO/IEC 9899:1990) (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π‘89 ΠΈΠ»ΠΈ Ρ€Π΅ΠΆΠ΅ Π‘90). Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ обСспСчиваСт ΠΏΠΎΠ»Π½ΠΎΠ΅ соотвСтствиС стандарту ANSI/ISO. ΠžΠΏΡ†ΠΈΡ -ansi ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ gcc, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ со стандартами ANSI/ISO. (ВслСдствиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ эти Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ компиляторами Π‘, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.) Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт макрос __STRICT_ANSI__ (ΠΊΠ°ΠΊ описано Π΄Π°Π»Π΅Π΅ Π² этой ΠΊΠ½ΠΈΠ³Π΅), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ срСды, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ANSI/ISO. -pedantic Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всС прСдупрСТдСния ΠΈ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ для ANSI/ISO-стандарта языка Π‘. Π­Ρ‚ΠΎ Π½Π΅ обСспСчиваСт ΠΏΠΎΠ»Π½ΠΎΠ΅ соотвСтствиС стандарту ANSI/ISO. -Wall Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ всСх ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ gcc, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. Но Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² спСцифичСских случаях. Аналогичный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ установлСн ΠΈ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ синтаксичСского контроля lint Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ вашСго исходного ΠΊΠΎΠ΄Π°, gcc позволяСт Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ компилятора. Π’ руководствС ΠΏΠΎ gcc ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны всС прСдупрСТдСния.

5.2. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹

ВрСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡΡ‚Π°Ρ‚ΡŒ сСбя Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ просматриваСтС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Linux. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π΄ конструкций, Π½Π΅ совмСстимых со стандартом ANSI/ISO. НСкоторыС ΠΈΠ· Π½ΠΈΡ… стоят Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½ΠΈΡ… Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. ВсС конструкции, рассматриваСмыС Π² этой ΠΊΠ½ΠΈΠ³Π΅, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ gcc.