ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° с Π² ubuntu инструкция. Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСды программирования для Linux. Установка Linux ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ софта

БрСдствами, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, ΡΠ²Π»ΡΡŽΡ‚ΡΡ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° GNU. Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ справку. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ GNU Π±Ρ‹Π» основан Π² 1984 Π³ΠΎΠ΄Ρƒ Π ΠΈΡ‡Π°Ρ€Π΄ΠΎΠΌ Π‘Ρ‚ΠΎΠ»Π»ΠΌΠ°Π½ΠΎΠΌ. Π•Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎ врСмя сотрудничСство ΠΌΠ΅ΠΆΠ΄Ρƒ программистами Π±Ρ‹Π»ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ коммСрчСского ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρ‡ΠΈΠ½ΠΈΠ»ΠΈ многочислСнныС прСпятствия Ρ‚Π°ΠΊΠΎΠΌΡƒ сотрудничСству. ЦСлью ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU Π±Ρ‹Π»ΠΎ созданиС ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΠΎΠ΄ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, которая Π½Π΅ допускала Π±Ρ‹ возмоТности присваивания ΠΊΠ΅ΠΌ-Ρ‚ΠΎ ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€Π°Π² Π½Π° это ПО. Π§Π°ΡΡ‚ΡŒΡŽ этого ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° ΠΈ являСтся Π½Π°Π±ΠΎΡ€ инструмСнтов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎ всС дистрибутивы Linux.

Одним ΠΈΠ· этих инструмСнтов являСтся компилятор GCC. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ эта Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ, ΠΊΠ°ΠΊ GNU C Compiler. БСйчас ΠΎΠ½Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ - GNU Compiler Collection.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GCC. По слоТившСйся Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ пСрвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² консоли привСтствиС Β«Hello world!Β» - «Здравствуй ΠœΠΈΡ€!Β».

Π€Π°ΠΉΠ»Ρ‹ с исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ GEdit KWrite, Kate, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Linux - vi ΠΈ emacs). Помимо тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ спСциализированныС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ со своими встроСнными Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… срСдств являСтся KDevelop. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ встроСнный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ встроСнная консоль, располоТСнная прямо ΠΏΠΎΠ΄ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ прямо Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡΡΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΊΠ½Π°ΠΌΠΈ, ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ hello. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Π½Ρ‘ΠΌ создайтС тСкстовый Ρ„Π°ΠΉΠ» hello.c со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ тСкстом:

#include

printf("Hello world!\n");

Π—Π°Ρ‚Π΅ΠΌ Π² консоли Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НабСритС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотритС Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ появился Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» a.out. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ». Запустим Π΅Π³ΠΎ. НабСритС Π² консоли:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ тСкст:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ gcc ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ присваиваСт всСм созданным исполняСмым Ρ„Π°ΠΉΠ»Π°ΠΌ имя a.out. Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ -o ΠΈ имя, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

gcc hello.c -o hello

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ появился исполняСмый Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ hello. Запустим Π΅Π³ΠΎ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, получился Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ исполняСмый Ρ„Π°ΠΉΠ», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для нас Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.

Π€Π»Π°Π³ -o являСтся лишь ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· многочислСнных Ρ„Π»Π°Π³ΠΎΠ² компилятора gcc. НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π»Π°Π³ΠΈ ΠΌΡ‹ рассмотрим ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ справочной систСмой man. НабСритС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ прСдстанСт справочная систСма ΠΏΠΎ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π»Π°Π³. Π‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· Π½ΠΈΡ… ΠΌΡ‹ скоро встрСтимся. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· справочной систСмы осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиши q.

Π’Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ запускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· нашСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ слэш. Π—Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ?

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Π½Π°Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°, опСрационная систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… /usr/bin ΠΈ /usr/local/bin, ΠΈ, СстСствСнно, Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ /usr/bin ΠΈ /usr/local/bin - систСмныС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ размСщСния исполняСмых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для размСщСния ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ,входящих Π² дистрибутив Linux. Π’Ρ‚ΠΎΡ€ΠΎΠΉ - для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, устанавливаСмых самим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (Π·Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ручаСтся). Вакая систСма Π½ΡƒΠΆΠ½Π°,Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/local/bin. ΠšΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ лишнСС Π² /usr/bin ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΡ€Π°Ρ…Ρƒ систСмы. Π’Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π·Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ дистрибутива.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

/home/dima/projects/hello/hello

Или Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² консоли. ΠŸΡ€ΠΈ этом ΠΎΠ΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ - Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π°./hello запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ hello, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π°../hello - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ hello, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π°./projects/hello/hello - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, находящихся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ.

Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² список систСмных ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. Для этого Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния - это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° gcc. Π•Ρ‘ Ρ€Π°Π±ΠΎΡ‚Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ этапа: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прСпроцСссором, компиляция ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° (ΠΈΠ»ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°).

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² основной Ρ„Π°ΠΉΠ» содСрТимоС всСх Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… #include. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΎ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π˜Ρ… опрСдСлСния находятся Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС: ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… с исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ….

Вторая стадия - компиляция. Она Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС C/C++ Π² Π½Π°Π±ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сохраняСтся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. РазумССтся, Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с Ρ€Π°Π·Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ процСссора Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ, собранный Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ машинС (Ρ€Π°Π·Π²Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли Ρƒ Π½ΠΈΡ… одинаковая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° процСссора ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы). Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ исходных ΠΊΠΎΠ΄ΠΎΠ²: ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρƒ ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊΠΎΠΉ процСссор ΠΈ какая опСрационная систСма.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΠΊΠ°ΠΊ всё это выглядит. НапишСм Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Π΅ΠΉΡˆΠΈΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, способный ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ ΠΈ Π΄Π΅Π»ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ запускС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π΄Π²Π° числа, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт произвСсти дСйствиС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ввСсти Π·Π½Π°ΠΊ арифмСтичСского дСйствия. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π·Π½Π°ΠΊΠ°: Β«+Β», Β«-Β», Β«*Β», Β«/Β». ПослС этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ останавливаСтся (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нас Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ - Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ).

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ kalkul, Π² Π½Π΅ΠΉ создадим Ρ„Π°ΠΉΠ» kalkul.c.

#include

printf(" ΠŸΠ΅Ρ€Π²ΠΎΠ΅Ρ‡ΠΈΡΠ»ΠΎ: ");

scanf("%f",&num1);

printf("Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: ");

scanf("%f",&num2);

printf(" ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (+ - * /): ");

while ((op = getchar()) != EOF)

printf("%6.2f\n",num1 + num2);

else if(op == "-")

printf("%6.2f\n",num1 - num2);

else if(op == "*")

printf("%6.2f\n",num1 * num2);

else if(op == "/")

printf("Ошибка: дСлСниС на ноль!\n");

break;

printf("%6.2f\n",num1 / num2);

Π˜Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сказано, выполняСтся прСпроцСссинг. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° этом этапС дСлаСтся, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -E. Π­Ρ‚Π° опция останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° этапС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСпроцСссором. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π° с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ Π² Π½Π΅Π³ΠΎ содСрТимым Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π’ нашСм случаС ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» - stdio.h - ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° консоль Π½ΡƒΠΆΠ½Ρ‹ΠΉ тСкст, Π° Ρ‚Π°ΠΊΠΆΠ΅ считывали с консоли Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌΠΈ слова.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

gcc -E kalkul.c -o kalkul.cpp

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ ΠΌΡ‹ Π΄Π°Π»ΠΈ имя kalkul.cpp. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ вСсьма Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ Π²ΠΎΡˆΡ‘Π» вСсь ΠΊΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° stdio.h. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, прСпроцСссор сюда Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ компилятору способ связи с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ функциями. Основной тСкст нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΈΠ΄Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самом Π½ΠΈΠ·Ρƒ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π΅Ρ‰Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ stdio.h. Если Π²Π°ΠΌ захочСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎ Π½Π΅ΠΉ Π²ΠΎ встроСнном руководствС man. НапримСр, Ссли Π²Π°ΠΌ Π²Π΄Ρ€ΡƒΠ³ захочСтся ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ таинствСнная функция fopen, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ:

Много ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² справочной систСмС info.

МоТно ΠΏΠΎΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ всСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ сразу.

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

НазваниС ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ компилятор просто Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ исходного ΠΈ мСняСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.c Π½Π°.o (ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, Ссли Π½Π°ΠΌ захочСтся Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ).

Если ΠΌΡ‹ создаём ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ· исходника, ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прСпроцСссором (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅), Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ явно, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌ исходного ΠΊΠΎΠ΄Π°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ прСпроцСссором, ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Π³ΠΈ прСпроцСссора. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» C++, Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° Ρ‚Π΅Π³ΠΎΠ² прСпроцСссора, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ связь с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ функциями Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ. Для явного указания Π½Π° язык ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° слуТит опция -x. Π€Π°ΠΉΠ» C++, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ прСпроцСссором обозначаСтся cpp-output.

gcc -x cpp-output -c kalkul.cpp

НаконСц, послСдний этап - ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° исполняСмый.

gcc kalkul.o -o kalkul

МоТно Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.

Π’Ρ‹ спроситС: Β«Π—Π°Ρ‡Π΅ΠΌ вся эта возня с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ этапами? НС Π»ΡƒΡ‡ΡˆΠ΅ Π»ΠΈ просто ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΡΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ gcc kalkul.c -o kalkul?Β»

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

Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ ΠŸΠ°Π½Ρ‚Π΅Π»Π΅ΠΈΡ‡Π΅Π² (dimanix2006 at rambler dot ru) - Знакомство с компилятором GCC

Π‘Ρ‚Π°Π»ΠΎ ясно, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ. Π‘Ρ‹Π»ΠΈ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки ΠΈ вопросы, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ провСдСния Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ мастСр-класса. Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ исправлСнного!

ΠœΠ°ΡΡ‚Π΅Ρ€-класс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° си ΠΏΠΎΠ΄ Linux. Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ основноС API.

Π”Π°Π½Π½Ρ‹ΠΉ мастСр-класс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ API *nix ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ОБ, Π² частности ΠΏΠΎΠ΄ Linux. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны особСнности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ ОБ Linux, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя:


  • ОзнакомлСниС с процСссом сборки ПО ΠΈ спСцифики компилятора C ΠΈΠ· состава GCC

  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ использованиС раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

  • ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² обСспСчСния многозадачности ΠΈ мСТпроцСссного взаимодСйствия

  • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΈ сСтСвых сокСтов

  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° сигналов

  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ процСссов, ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅, использованиС многопоточности, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ ПО

  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ особСнностСй консольного Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

  • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΈΡ… использованиС

Π”Π°Π½Π½Ρ‹ΠΉ мастСр-класс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ПО, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², программистов ΠΈ просто Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΊΡ‚ΠΎ интСрСсуСтся устройством ΠΈ спСцификой ОБ Линукс.

ВрСбования ΠΊ участникам мастСр-класса: Π—Π½Π°Π½ΠΈΠ΅ языка си, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ Π‘.Π’. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½,Π”.М. Π ΠΈΡ‡ΠΈ "Π―Π—Π«Πš Π‘".

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ мастСр-класса Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 6 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ.

ΠœΠ΅ΡΡ‚ΠΎ провСдСния - Π³ΠΎΡ€ΠΎΠ΄ Москва, Π² ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π₯акспСйса НСйрон.
Π”Π°Ρ‚Ρ‹ провСдСния: ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎ 4 июля (понСдСльник), ΠΏΠΎ 7 июля (Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³) с 10 Π΄ΠΎ 17 с ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²ΠΎΠΌ Π½Π° ΠΎΠ±Π΅Π΄ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°ΠΌΠΈ Π½Π° Ρ‡Π°ΠΉ/ΠΊΠΎΡ„Π΅.

Онлайн трансляции Π½Π΅ планируСтся.
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅: 8-10.

Π—Π°ΠΏΠΈΡΡŒ вСдётся ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ [email protected] Π»ΠΈΠ±ΠΎ Π² коммСнтариях ΠΊ этому посту. Для записи Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вашС Π€.И.О. (ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ) ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈ ΠΏΠΎΡ‡Ρ‚Π°). Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΠΈ посСщСния этого мастСр-класса, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ Ρ€ΠΎΠ΄ занятий.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° курса:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅


  • ОзнакомлСниС со спСцификой сборки ПО Π² GNU/Linux

  • ОзнакомлСниС с ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ тСкстовыми Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ (vi,nano,mcedit)

  • Π Π°Π±ΠΎΡ‚Π° с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ gdb

  • Ручная ΠΈ автоматичСская сборка ПО (Makefile)

  • МодСль ΠšΠ»ΠΈΠ΅Π½Ρ‚-Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ-Π‘Π΅Ρ€Π²Π΅Ρ€ (КИБ)

  • БтатичСская сборка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

  • БовмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

  • Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 2. НизкоуровнСвый Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

  • ΠžΠ±Π·ΠΎΡ€ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π² Linux (Ubuntu)

  • Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы

  • БистСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹: open, close, write, read ΠΈ lseek

  • Π’ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²

  • Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹Π΅ дСскрипторы ΠΈ ТСсткиС ссылки

  • ΠŸΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ

  • Ѐайловая систСма proc

  • Π”Π²Π° способа ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ содСрТимоС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

  • Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ спСцифика ΠΈΡ… примСнСния

  • Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° областСй Ρ„Π°ΠΉΠ»Π°

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 3. ΠœΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΠ΅ взаимодСйствиС

  • ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ мСТпроцСссного взаимодСйствия Linux (Ubuntu)

  • НСимСнованныС ΠΊΠ°Π½Π°Π»Ρ‹ (pipes)

  • Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ (named pipes)

  • БообщСния (message queue)

  • РаздСляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ (shared memory)

  • Π‘Π΅ΠΌΠ°Ρ„ΠΎΡ€Ρ‹ (semaphores)

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 4. Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹

  • Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ (UNIX-сокСты)

  • ΠŸΠ°Ρ€Π½Ρ‹Π΅ сокСты (pair sockets)

  • Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ сокСты (sockets)

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 5. Π‘ΠΈΠ³Π½Π°Π»Ρ‹

  • Знакомство с сигналами (signals)

  • ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ сигналов ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² мСТпроцСссного взаимодСйствия

  • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сигналов (signal handling)

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ 6. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹

  • ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ процСссов β€” fork()

  • Π—Π°ΠΌΠ΅Π½Π° исполняСмого процСсса β€” exec()

  • Π—ΠΎΠΌΠ±ΠΈ (zombies) β€” ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния ΠΈ способы ΠΈΡ… устранСния

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 7. ΠŸΠΎΡ‚ΠΎΠΊΠΈ

  • ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΈ процСссы

  • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° построСния ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (multithreading)

  • ДосрочноС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 8. ΠŸΠΎΡ‚ΠΎΠΊΠΈ (ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅)

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ°

  • БрСдства синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (synchronize primitives)

  • Атрибуты ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 9. Π”Π΅ΠΌΠΎΠ½Ρ‹ (слуТбы)

  • ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Π° ΠΎΡ‚ консольной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹

  • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ² (daemons)

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ сСтСвыС сокСты

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 10. ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄

  • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

  • ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ пСрСнаправлСния Π²Ρ‹Π²ΠΎΠ΄Π°

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ

  • Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ESC-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 11. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ

  • ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

  • БовмСстный доступ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ

  • ЧастныС отобраТСния

  • Π”Ρ€ΡƒΠ³ΠΈΠ΅ примСнСния mmap

ΠœΠΎΠ΄ΡƒΠ»ΡŒ 12. Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

  • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

  • ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ncurses

Π’Π΅Π΄ΡƒΡ‰ΠΈΠΉ курса: Π”ΠΎΠ»ΠΈΠ½ Π‘Π΅Ρ€Π³Π΅ΠΉ. Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Ρ‰ΠΈΠΊ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ПО linux (ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ΅, тСстового ПО для ΠΆΠ΅Π»Π΅Π·Π°, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ПО для встраиваСмых систСм. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ linux с 2011 Π³ΠΎΠ΄Π°. Π Π°Π±ΠΎΡ‚Π°Π» Π² ОАО "ΠΠ˜Π¦Π­Π’Π’", АО Β«ΠšΠΎΠ½Ρ†Π΅Ρ€Π½ «БистСмпром», ООО "ПРОБОЀВ" (Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ "Π”ΠΎΠ»Π°ΠΌΠ°Π½Ρ‚").

Помню, ΠΊΠΎΠ³Π΄Π° я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊ вопрос: «Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C Π² Ubuntu?Β» Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² это Π½Π΅ лСгкая Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд.

Мой ΠΏΡƒΡ‚ΡŒ изучСния C начался с бСстсСллСра Β«Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½, ДСннис Π ΠΈΡ‚Ρ‡ΠΈ, Π―Π·Ρ‹ΠΊ программирования C, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β» . Π’Π°ΠΌ рассказываСтся ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Unix, Π½ΠΎ этот способ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Linux. Авторы ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΈΡΡŒ, написав ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах это ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ справочнику ΠΈΠ»ΠΈ спСциалисту Π·Π° подробностями.

ΠŸΠΎΠ±ΡƒΠ΄Ρƒ спСциалистом:) ΠΈ расскаТу Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ Π½Π° C++ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Ubuntu.

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

Для написания ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ubuntu, тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса β€” gedit.

Рис. 1. Запуск тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ являСтся Β«Hello, World!Β» , выводящСС привСтствиС Π½Π° экран:

#include int main(int argc, char **argv) { puts("Hello, world!"); return 0; }
ΠŸΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² gedit ΠΈ сохраняСм Π² Ρ„Π°ΠΉΠ» Hello.c , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол. НС самоС Π»ΡƒΡ‡ΡˆΠ΅ мСсто для сохранСния, Π½ΠΎ это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ случай, ΠΊΠΎΠ³Π΄Π° Π² ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ содСрТится ΠΏΡ€ΠΎΠ±Π΅Π».


Рис. 2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° hello, World.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запускаСм Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Dash, Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ горячих клавиш + + . Π—Π΄Π΅ΡΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ установим инструмСнты сборки, ΠΊΡƒΠ΄Π° входят Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ компиляторы gcc для языка C ΠΈ g++ для языка C++:

Sudo apt install build-essential
Для установки трСбуСтся ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» просто Π² цСлях бСзопасности Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ символы.

Π”Π°Π»Π΅Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΡƒΠ΄Π° сохранили Ρ„Π°ΠΉΠ» с тСкстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cd (Π°Π½Π³Π». change directory β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³). Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ cd , Π·Π°Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» ΠΏΡƒΡ‚ΡŒ, ΠΊΡƒΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ.

Для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ:

Cd ~/Π Π°Π±ΠΎΡ‡ΠΈΠΉ\ стол
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° символ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚Ρ‹ \ Π² ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π Π°Π±ΠΎΡ‡ΠΈΠΉ стол. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ косая экранируСт ΠΏΡ€ΠΎΠ±Π΅Π», ΠΈ сообщаСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ cd , Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° Π½ΠΈΠΌ символы ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠΌΠ΅Π½ΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ» ~ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡƒΡ‚ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ домашнСй ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Для просмотра содСрТимого Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ примСняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° ls (сокращСниС ΠΎΡ‚ Π°Π½Π³Π». list).

Команда компиляции для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Gcc -Wall -o hello hello.c
Π³Π΄Π΅:

  • gcc β€” компилятор для языка программирования C;
  • -Wall β€” ΠΊΠ»ΡŽΡ‡ Π²Ρ‹Π²ΠΎΠ΄Π° всСх ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ компилятора;
  • -o hello β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π° -o указываСтся имя Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°;
  • hello.c β€” имя нашСго исходного Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ.
Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls , ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ появилась наша скомпилированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° hello , отмСчСнная Ρ†Π²Π΅Ρ‚ΠΎΠΌ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΌ исполняСмыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ запустим hello , Π²Π²ΠΎΠ΄ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с прСфиксом./ :

./hello
ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ./ сообщаСт Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ ΠΎ нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. (Π’ΠΎΡ‡ΠΊΠ° β€” это условноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.)

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘++

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C. Β«Hello, World!Β» Π½Π° C++ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

#include int main(int argc, char **argv) { std::cout << "Hello, World!" << std::endl; return 0; }
БохраняСм тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ hello2.cpp . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄Π° компилирования Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

G++ -Wall -o hello2 hello2.cpp
Для запуска Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² Ubuntu ΠΈΠ»ΠΈ Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ дистрибутивС Linux ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠ½ΠΈΠ³Π°Ρ…:

  • Иванов Н. Н. β€” ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Linux. Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ. β€” 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅;
  • НСйл ΠœΠ΅Ρ‚ΡŒΡ, Π ΠΈΡ‡Π°Ρ€Π΄ Бтоунс β€” ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux: ΠŸΠ΅Ρ€. с Π°Π½Π³Π». β€” 4-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅;
  • ΠšΠΎΠ»ΠΈΡΠ½ΠΈΡ‡Π΅Π½ΠΊΠΎ Π”. Н. β€” Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Linux-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

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

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

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

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

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

Π—Π°Ρ‡Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚ΡŒ Π‘ΠΈ:

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

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

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

  • БтатичСскиС - ΠΎΠ½ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° этапС компиляции, ΠΎΠ½ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ послС этого всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ доступны Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄Π½Ρ‹Π΅. Π’Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.a;
  • ДинамичСскиС - Ρ‚Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π°Ρ‰Π΅, ΠΎΠ½ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ динамичСски. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½Π° какая-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΎΠ½Π° просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π΅ ΠΏΠΎ извСстному адрСсу Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π­Ρ‚ΠΎ позволяСт ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ - .so, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ Shared Object.

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

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

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

КаТдая ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· мноТСства Ρ„Π°ΠΉΠ»ΠΎΠ², это Ρ„Π°ΠΉΠ»Ρ‹ исходников с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.c ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.h. Π’Π°ΠΊΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ содСрТат Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².с. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ. ΠΊΠ°ΠΊ компилятор смоТСт ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹, доступны Π»ΠΈ всС статичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ выполняСтся прСпроцСссор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСт исходный Ρ„Π°ΠΉΠ», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ инструкции, ΠΊΠ°ΠΊ include для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

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

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

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

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

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

sudo apt install gcc

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

$ gcc ΠΎΠΏΡ†ΠΈΠΈ исходный_Ρ„Π°ΠΉΠ»_1.с -o Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ_Ρ„Π°ΠΉΠ»

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

  • -o - Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ„Π°ΠΉΠ» для Π²Ρ‹Π²ΠΎΠ΄Π°;
  • -c - ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»;
  • -x - ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°;
  • -l - Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

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

include
#include

int main(){
printf("сайт\n");
printf("ΠšΠΎΡ€Π΅Π½ΡŒ: %f\n", sqrt(9));
return 0;
}

gcc -c program.c -o program.o

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

gcc -lm program.o -o program

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡ†ΠΈΡŽ -l, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, здСсь ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ просто Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Ρ‚Π° ΠΈΠ»ΠΈ иная функция. Волько послС этого ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:

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

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

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

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

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

Π’ качСствС зависимости Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ другая Ρ†Π΅Π»ΡŒ, основная Ρ†Π΅Π»ΡŒ - all, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° выполняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия ΠΏΠΎ сборкС. НапримСр, для нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Makefile ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

program: program.o
gcc -lm program.o -o program

program.o: program.c
gcc -c program.c -o program.o

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

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

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

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

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

О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ компилятор БИ ΠΈ Π‘++ Π½Π° Windows я ΡƒΠΆΠ΅ писал Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅: .

Но эти языки кросплатформСнныС, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ линукс Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ домашнюю систСму, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ инструмСнт. Плюс Π² послСднСС врСмя возрос ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Linux. И ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… хотят ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сСгодня я расскаТу Π²Π°ΠΌ ΠΊΠ°ΠΊ ΠΆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ компилятор C ΠΈ C++ Π½Π° систСму Linux.


Если Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ windows, Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Linux, Ρ‚ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΌΠΎΠΈΠΌΠΈ ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ ΠΏΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ машинС: .

Π˜Ρ‚Π°ΠΊ, линукс установлСн, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль ΠΈ прописываСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ установки компиляторов.
$sudo apt-get install gcc g++

Π’ΠΎΡ‚ ΠΈ всС, компиляторы установлСны. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.
Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² домашнюю ΠΏΠ°ΠΏΠΊΡƒ ΠΈ создаСм Ρ„Π°ΠΉΠ» hello.c, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ пишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ:

#include main() { printf("Hello\n"); }

Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ скрипт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:
$gcc hello.c -o hello

ВсС, Π² ΠΏΠ°ΠΏΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° hello. Π’Π΅ΠΏΠ΅Ρ€ΡŒ запустим Π΅Ρ‘.
$./hello

Но ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² простом Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² консоли β€” это особоС ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅. Нам ΠΆΠ΅ Π½ΡƒΠΆΠ½Π° ΠΌΠ°Π»ΠΎ-мальски Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ IDE для программирования Π½Π° Π‘ ΠΈ Π‘++ со встроСнным компилятором.

Если Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ мою ΡΡ‚Π°Ρ‚ΡŒΡŽ , Ρ‚ΠΎ Π²Ρ‹ поняли ΠΎ Ρ‡Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ. Π”Π°, ΠΌΡ‹ установим Geany. Π­Ρ‚ΠΎ отличная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для ΠΌΠ½ΠΎΠ³ΠΈΡ… языков. ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π½Π΅ΠΉ само ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅.
ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль ΠΈ пишСм:
$sudo apt-get install geany

БоглашаСмся с установкой ΠΈ ΠΆΠ΄Π΅ΠΌ Π΅Π΅ окончания. ПослС Ρ‡Π΅Π³ΠΎ запускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π² Π½Π΅ΠΉ Ρ‚ΠΎΡ‚ самый Ρ„Π°ΠΉΠ» hello.c ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ, Π·Π°Ρ‚Π΅ΠΌ ΠΆΠΌΠ΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ΠΊΠΈΡ€ΠΏΠΈΡ‡ Β«Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ»Β» ΠΈ запускаСм красной ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Β«ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ»Β». И Ρƒ нас ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ консольноС ΠΎΠΊΠ½ΠΎ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ.