3 ΠΠΎΡΠ΅ΡΠ°ΠΊ ΡΠ°Π΄Π°
3.1 ΠΡΠ΅Π³Π»Π΅Π΄
3.2 ΠΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈ
3.2.1 ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ Π½Ρ-3 ΠΈΠ·Π΄Π°ΡΠ° ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡΠ½Π΅ Π°ΡΡ
ΠΈΠ²Π΅
3.3 ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ Π½Ρ-3 ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΈΡ
3.3.1 Π£ΡΠΈΡΠ°Π²Π°ΡΠ΅ Π½Ρ-3 ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠ°ΠΊΠ΅
3.4 ΠΠΎΠ½ΡΠ°ΠΆΠ° Π½Ρ-3
3.4.1 ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ° Π±ΡΠΈΠ»Π΄.ΠΏΠΈ
3.4.2 ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ° ΠΠ°ΠΊΠ΅
3.4.3 ΠΠ°ΠΏΡΠ°Π²ΠΈ ΡΠ° ΠΠ°Ρ-ΠΎΠΌ
3.5 Π’Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Ρ-3
3.6 ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ΅
3.6.1 ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅
3.6.2 ΠΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°
3.6.3 Π Π°Π΄Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΈΠΊ
ΠΠΎΠ³Π»Π°Π²ΡΠ΅ ΠΠ‘ΠΠ£ΠΠΠ‘
ΠΠΎΡΠ΅ΡΠ°ΠΊ
ΠΠ²ΠΎ ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅ ΠΈΠΌΠ° Π·Π° ΡΠΈΡ Π΄Π° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈ ΡΠΈΡΠ°ΠΎΡΠ° Π΄Π° ΠΏΠΎΡΠ½Π΅ ΡΠ° ΡΠ°ΡΡΠ½Π°ΡΠΎΠΌ ΠΊΠΎΡΠΈ ΠΌΠΎΠΆΠ΄Π° Π½ΠΈΠΊΠ°Π΄Π° Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΎ Π½Ρ-3. ΠΠΎΠΊΡΠΈΠ²Π° ΠΏΠΎΠ΄ΡΠΆΠ°Π½Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²Π΅, ΠΊΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ Π½Ρ-3, ΠΊΠ°ΠΊΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Ρ-3 ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ²ΠΎΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅.
3.1 ΠΡΠ΅Π³Π»Π΅Π΄
Π½Ρ-3 ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½ ΠΊΠ°ΠΎ ΡΠΈΡΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΡΡΠ²Π΅ΡΠ° Π·Π° ΡΠ°ΡΠ°Π΄ΡΡ. Π’ΠΎΠΊΠΎΠΌ Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠ΅ ΠΏΠΎΠ²Π΅Π·ΡΡΠ΅ ΡΠ° ΠΎΠ²ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠ°. ΠΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ΅Π·ΠΈΡΠΈ Π¦++ ΠΈΠ»ΠΈ ΠΠΈΡΡ ΠΎΠ½ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΠΏΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°.
ΠΡ-3 ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄, ΡΡΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΡΠ° ΠΈΠΌΠ°ΡΠΈ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅ Π·Π° ΡΠ°Π·Π²ΠΎΡ ΡΠΎΡΡΠ²Π΅ΡΠ° Π΄Π° Π±ΠΈ ΡΠ΅ ΠΏΡΠ²ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠ»Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π° Π·Π°ΡΠΈΠΌ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ. Π£ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π½Ρ-3 Π±ΠΈ ΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°ΡΠΈ ΠΊΠ°ΠΎ Π³ΠΎΡΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π·Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌ, Π°Ρ Π±ΡΠ΄ΡΡΠ½ΠΎΡΡΠΈ Π±ΠΈ ΡΠ΅ ΠΌΠΎΠ³Π»Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°ΡΠΈ Π½Π° ΠΎΠ²Π°Ρ Π½Π°ΡΠΈΠ½. ΠΠ»ΠΈ Π΄Π°Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ ΡΠ°Π΄Π΅ ΡΠ²ΠΎΡ ΠΏΠΎΡΠ°ΠΎ ΡΡΠ΅ΡΡΡΡΡΠΈ ΡΠ°ΠΌ Π½Ρ-3, ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ ΠΈΠΌΠ°ΡΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠΊΠΎ Π½Π΅ΠΊΠΎ ΠΆΠ΅Π»ΠΈ Π΄Π° ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ ΠΏΠΎΡΠ°ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° Π³ΠΎΡΠΎΠ²ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π½Π΅ΠΊΠ° ΡΠ΅ ΡΠ°Π²ΠΈ Π½Π° ΠΌΠ΅ΡΠ»ΠΈΠ½Π³ Π»ΠΈΡΡΡ Π½Ρ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ.
ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΡΡΠΈ Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3. ΠΡΠ²ΠΈ ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ΡΠ΅ ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π²Π°Π½ΠΈΡΠ½ΠΎ ΠΈΠ·Π΄Π°ΡΠ΅ ΡΠ° Π³Π»Π°Π²Π½ΠΎΠ³ ΡΠ°ΡΡΠ°. ΠΡΡΠ³ΠΈ ΡΠ΅ ΠΈΠ·Π±ΠΎΡ ΠΈ ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ° ΡΠ°Π·Π²ΠΎΡΠ½ΠΈΡ Π²Π΅ΡΠ·ΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π½Ρ-3 ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ΅. Π’ΡΠ΅ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ½ΠΈΡ Π°Π»Π°ΡΠ° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π·Π° ΡΡΠΈΡΠ°Π²Π°ΡΠ΅ Π²ΠΈΡΠ΅ Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ° Π·Π° Π½Ρ-3. ΠΡΠΎΡΠΈ ΡΠ΅ΠΌΠΎ ΠΊΡΠΎΠ· ΡΠ²Π°ΠΊΠΈ ΡΠ΅Ρ ΡΠ΅ Π°Π»Π°ΡΠΈ ΠΌΠ°Π»ΠΎ ΡΠ°Π·Π»ΠΈΠΊΡΡΡ.
ΠΡΠΊΡΡΠ½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΠΈΠ½ΡΠΊΠ° ΠΌΠΎΠ³Ρ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΠΈ Π·Π°ΡΡΠΎ Π½Ρ-3 Π½ΠΈΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΠ΅Π½ ΠΊΠ°ΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠ°ΠΎ Π²Π΅ΡΠΈΠ½Π° Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΌΠ΅Π½Π°ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°? ΠΠ°ΠΊΠΎ ΠΏΠΎΡΡΠΎΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΠΈΠ½ΡΠΊ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ (Π½ΠΏΡ. ΠΠ΅Π±ΠΈΠ°Π½), Π²Π΅ΡΠΈΠ½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π½Π° ΠΊΡΠ°ΡΡ ΡΡΠ΅ΡΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈ ΠΌΠΎΡΠ° ΡΠ°ΠΌΠΈ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ Π½Ρ-3, ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΠΊΠΎΠ΄Π° Π·Π³ΠΎΠ΄Π½Π°. ΠΠ· ΡΠΎΠ³ ΡΠ°Π·Π»ΠΎΠ³Π°, ΡΠΎΠΊΡΡΠΈΡΠ°ΡΠ΅ΠΌΠΎ ΡΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ°.
ΠΠ° Π²Π΅ΡΠΈΠ½Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Ρ-3 ΠΏΡΠ°Π²Π° ΠΊΠΎΡΠ΅Π½ Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ, ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΎΠ²Π°Π½ΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΠ³ Π½Π°Π»ΠΎΠ³Π°.
3.2 ΠΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈ
Π¦Π΅ΠΎ ΡΠΊΡΠΏ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ
Π½Ρ-3 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠΌΠ° Π±ΡΠΎΡΠ½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠ΅ΡΠΈΡ
ΡΡΡΠ°Π½Π°, Π°Π»ΠΈ ΡΠ³Π»Π°Π²Π½ΠΎΠΌ Π½Ρ-3 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ· ΠΏΠΎΠ΄ΡΡΠΊΡ Π·Π° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΈΡ
(ΡΠ΅ΡΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΡ
ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ: Π¦++ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ, ΠΠΈΡΡ
ΠΎΠ½, ΡΡΠ΅ΡΠΈΠ²Π°Ρ ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΠΊΠΎΠ΄Π° (Π½ΠΏΡ. Π΅Π½Π΅ΡΠ³ΠΈΡΠ°, Π΅ΠΌΠ°ΡΡ ΠΈΠ»ΠΈ ΠΡΠ»ΠΈΠΏΡΠ΅) ΠΈ, Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½Π° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°, ΠΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΠ·ΠΈΡΠ°. ΠΠ΅ΡΠΈΠ½Π° Π½ΠΎΠ²ΠΈΡ
ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π½Π΅ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° Π±ΡΠΈΠ½Π΅ Π°ΠΊΠΎ ΡΠΈΡ
ΠΎΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΏΡΠΈΡΠ°Π²ΠΈ Π΄Π° Π½Π΅ΠΊΠ΅ Π½Ρ-3 Π½Π°ΠΏΡΠ΅Π΄Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ, Π°Π»ΠΈ Π·Π° ΠΎΠ½Π΅ ΠΊΠΎΡΠΈ ΠΆΠ΅Π»Π΅ ΠΏΠΎΡΠΏΡΠ½Ρ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ, ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ Π²ΠΈΠΊΠΈ ΠΊΠΎΡΠΈ ΡΠΊΡΡΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ° ΠΏΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡ
ΡΠ°Π²Π΅ΡΠ° ΠΈ ΡΡΠΈΠΊΠΎΠ²Π°. ΠΠ΅Π΄Π½Π° ΡΠ°ΠΊΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ, ΡΠ° ΡΠΏΡΡΡΡΠ²ΠΈΠΌΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°:
ΠΠ΄Π΅ΡΠ°ΠΊ ΠΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈ Π½Π° ΠΎΠ²ΠΎΠΌ Π²ΠΈΠΊΠΈΡΡ ΠΎΠ±ΡΠ°ΡΡΠ°Π²Π° ΠΊΠΎΡΠΈ ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΠΏΠΎΠ΄ΡΡΠΊΡ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΈΡ Π½Ρ-3 ΠΎΠΏΡΠΈΡΠ° ΠΈ ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΡΡΠΆΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΡΠΈΡ ΠΎΠ²Ρ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΈΠΌ Π²Π΅ΡΠ·ΠΈΡΠ°ΠΌΠ° ΠΠΈΠ½ΡΠΊ-Π° ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΠ‘-Π°.
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΎΠ²Ρ ΠΏΡΠΈΠ»ΠΈΠΊΡ Π΄Π° ΠΈΡΡΡΠ°ΠΆΠΈΡΠ΅ Π½Ρ-3 Π²ΠΈΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ Π³Π»Π°Π²Π½Ρ Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΡ:
ΠΠ°ΠΊΠ΅Ρ Π°Π»Π°ΡΠ°/Π²Π΅ΡΠ·ΠΈΡΠ°
- Π¦++ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ
ΡΠ»Π°Π½Π³++ ΠΈΠ»ΠΈ Π³++ (Π³++ Π²Π΅ΡΠ·ΠΈΡΠ° 4.9 ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΈΡΠ°) - ΠΠΈΡΠΎΠ½
ΠΏΠΈΡΡ ΠΎΠ½2 Π²Π΅ΡΠ·ΠΈΡΠ° >= 2.7.10, ΠΈΠ»ΠΈ Π²Π΅ΡΠ·ΠΈΡΠ° ΠΏΠΈΡΡ ΠΎΠ½3 >=3.4 - Π³ΠΈΡ
Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΡ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ (Π·Π° ΠΏΡΠΈΡΡΡΠΏ Π½Ρ-3 Π½Π° ΠΠΈΡΠΠ°Π±.ΡΠΎΠΌ) - ΠΊΠ°ΡΡΠ°Π½
Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΡ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ (Π·Π° ΡΠ°ΡΠΏΠ°ΠΊΠΈΠ²Π°ΡΠ΅ Π½Ρβ3 ΠΈΠ·Π΄Π°ΡΠ°) - Π±ΡΠ½Π·ΠΈΠΏ2
Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΡ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ (Π·Π° ΡΠ°ΡΠΏΠ°ΠΊΠΈΠ²Π°ΡΠ΅ Π½Ρβ3 ΠΈΠ·Π΄Π°ΡΠ°)
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²Π΅ΡΠ·ΠΈΡΡ ΠΠΈΡΡ
ΠΎΠ½-Π°, ΠΎΡΠΊΡΡΠ°ΡΡΠ΅ python -V
. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ Π²Π΅ΡΠ·ΠΈΡΡ Π³++, ΠΎΡΠΊΡΡΠ°ΡΡΠ΅ g++ -v
. ΠΠΊΠΎ Π½Π΅ΠΊΠΈ Π°Π»Π°ΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΡ ΠΏΡΠ΅ΡΡΠ°ΡΠΈ, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π²ΠΎΠ΄ΠΈΡ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ Π½Π° Π½Ρ-3 Π²ΠΈΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ.
ΠΠ΄ ΡΠ°Π΄Π°, ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ Π΄Π° ΡΠΈΡΠ°Ρ ΠΊΠΎΡΠΈΡΡΠΈ ΠΠΈΠ½ΡΠΊ, ΠΠ°ΡΠΠ‘ ΠΈΠ»ΠΈ ΠΠΈΠ½ΡΠΊ Π΅ΠΌΡΠ»Π°ΡΠΎΡ ΠΈ Π΄Π° ΠΈΠΌΠ° Π±Π°ΡΠ΅ΠΌ Π³ΠΎΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ Π°Π»Π°ΡΠ΅.
3.2.1 ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ Π½Ρ-3 ΠΈΠ·Π΄Π°ΡΠ° ΠΊΠ°ΠΎ ΠΈΠ·Π²ΠΎΡΠ½Π΅ Π°ΡΡ ΠΈΠ²Π΅
ΠΠ²ΠΎ ΡΠ΅ ΡΠΎΠΊ Π°ΠΊΡΠΈΡΠ΅ Π·Π° Π½ΠΎΠ²ΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΊΠΎΡΠΈ ΠΆΠ΅Π»ΠΈ Π΄Π° ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ° Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠΈΠΌ ΠΈΠ·Π΄Π°ΡΠ΅ΠΌ ΠΈ Π²Π΅ΡΠ·ΠΈΡΠ°ΠΌΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Ρ-3. Π½Ρ-3 ΠΈΠ·Π΄Π°ΡΠ° ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΡΡΡ ΠΊΠ°ΠΎ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΎΠ²Π°Π½Π΅ ΠΈΠ·Π²ΠΎΡΠ½Π΅ Π°ΡΡ ΠΈΠ²Π΅, ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ Π½Π°Π·ΠΈΠ²Π°ΡΡ ΡΠ°ΡΠ±Π°Π»Π». ΡΠ°ΡΠ±Π°Π»Π» ΡΠ΅ ΠΏΠΎΡΠ΅Π±Π°Π½ ΡΠΎΡΠΌΠ°Ρ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠ΅ Π°ΡΡ ΠΈΠ²Π΅ Ρ ΠΊΠΎΡΠ΅ΠΌ ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΠ΅ Π·Π°ΡΠ΅Π΄Π½ΠΎ. ΠΡΡ ΠΈΠ²Π° ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΡΠΈΠΌΠΎΠ²Π°Π½Π°. Π½Ρ-3 ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΏΡΠ΅ΠΊΠΎ ΡΠ°ΡΠ±Π°Π»Π» ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, ΡΠ°ΠΌΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π°Π±Π΅ΡΠ΅ΡΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅, ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ΡΠ΅ Π³Π° ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΡΡΠ΅ΡΠ΅.
ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° Π²ΠΈ, ΠΊΠ°ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ, ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Ρ-3 Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ ΡΠ°Π΄Π½ΠΈ ΠΏΡΠΎΡΡΠΎΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠΈ ΡΠ°Π΄Π½Ρ ΠΊΠΎΠΏΠΈΡΡ ΠΈΠ·Π΄Π°ΡΠ° ΡΠ½ΠΎΡΠ΅ΡΠ΅ΠΌ ΡΠ»Π΅Π΄Π΅ΡΠ΅Π³ Ρ ΠΠΈΠ½ΡΠΊ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ (Π½Π°ΡΠ°Π²Π½ΠΎ, Π·Π°ΠΌΠ΅Π½ΠΎΠΌ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈΡ Π±ΡΠΎΡΠ΅Π²Π° Π²Π΅ΡΠ·ΠΈΡΠ°)
$ cd
$ mkdir workspace
$ cd workspace
$ wget https://www.nsnam.org/release/ns-allinone-3.29.tar.bz2
$ tar xjf ns-allinone-3.29.tar.bz2
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ ΠΏΠ°ΠΆΡΡ Π½Π° Π³ΠΎΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΡΡΠ»ΡΠΆΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π²Π³Π΅Ρ, ΠΊΠΎΡΠΈ ΡΠ΅ Π°Π»Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΠ°ΡΠ° ΡΠ° ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΊΠΎ Π³Π° Π½ΠΈΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ²ΠΎΡ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ Π·Π° ΠΎΠ²ΠΎ.
ΠΡΠ°ΡΠ΅ΡΠ΅ ΠΎΠ²ΠΈΡ ΠΊΠΎΡΠ°ΠΊΠ° ΠΎΠ΄Π²Π΅ΡΡΠ΅ Π²Π°Ρ Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π½Ρ-Π°Π»Π»ΠΈΠ½ΠΎΠ½Π΅-3.29, ΡΠ°ΠΌΠΎ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°
$ cd ns-allinone-3.29
$ ls
bake constants.py ns-3.29 README
build.py netanim-3.108 pybindgen-0.17.0.post58+ngcf00cc0 util.py
Π‘Π°Π΄Π° ΡΡΠ΅ ΡΠΏΡΠ΅ΠΌΠ½ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Ρ-3 Π±Π°Π·Π½Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠ΅ΡΠ΅ Π½Π° ΠΎΠ΄Π΅ΡΠ°ΠΊ ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΡΠΈ Π½Ρ-3.
3.3 ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ Π½Ρ-3 ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΈΡ
Π½Ρ-3 ΠΊΠΎΠ΄ ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ°Π½ Ρ ΠΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌΠΈΠΌΠ° Π½Π° ΠΠΈΡΠΠ°Π±.ΡΠΎΠΌ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ
ΠΠ°ΡΠ»Π°ΠΊΡΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΠΈΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΡΠ΅ Π΄Π° ΡΠ°ΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅ Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½. ΠΠ²ΠΎ ΡΠ΅ ΡΠΊΡΠΏ ΡΠΊΡΠΈΠΏΡΠΈ ΠΊΠΎΡΠΈ ΡΠΏΡΠ°Π²ΡΠ° ΡΡΠΈΡΠ°Π²Π°ΡΠ΅ΠΌ ΠΈ ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅ΠΌ Π½Π°ΡΡΠ΅ΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈΡ Π½Ρ-3 ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠΊΠΎ ΡΡΠ΅ Π½ΠΎΠ²ΠΈ Ρ ΠΠΈΡΡ, ΡΠ΅ΡΠΌΠΈΠ½ΠΈ βΡΠΎΡΠΊβ ΠΈ βΠΊΠ»ΠΎΠ½β ΠΌΠΎΠΆΠ΄Π° Π²Π°ΠΌ Π½ΠΈΡΡ ΠΏΠΎΠ·Π½Π°ΡΠΈ; Π°ΠΊΠΎ ΡΠ΅ΡΡΠ΅, ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌΠΎ Π²Π°ΠΌ Π΄Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΡΠ΅ (Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½Ρ ΠΊΠΎΠΏΠΈΡΡ) ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Π½Π° ΠΠΈΡΠΠ°Π±.ΡΠΎΠΌ ΠΎΠ²Π°ΠΊΠΎ:
$ cd
$ mkdir workspace
$ cd workspace
$ git clone https://gitlab.com/nsnam/ns-3-allinone.git
$ cd ns-3-allinone
Π£ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ, ΠΏΡΠΈΠΊΠ°Π· Π²Π°ΡΠ΅Π³ ΠΈΠΌΠ΅Π½ΠΈΠΊΠ° Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½ ΠΌΠ°Π»ΠΎ Π΄ΡΡΠ³Π°ΡΠΈΡΠΈ ΠΎΠ΄ Π³ΠΎΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎΠ³ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π°ΡΡ ΠΈΠ²Π΅ ΠΈΠ·Π΄Π°ΡΠ°. Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
$ ls
build.py constants.py download.py README util.py
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π΄ΠΎΠ²Π½Π»ΠΎΠ°Π΄.ΠΏΠΈ, ΠΊΠΎΡΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ½ΠΎ ΠΈΠ·Π΄Π²ΠΎΡΠΈΡΠΈ Π½Ρ-3 ΠΈ ΠΏΡΠ°ΡΠ΅ΡΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄. ΠΠ²Π΄Π΅ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ·Π±ΠΎΡ: ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΠ·ΠΌΠΈΡΠ΅ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠΈ ΡΠ½ΠΈΠΌΠ°ΠΊ ΡΠ°Π·Π²ΠΎΡΠ° Π½Ρ-3:
$ python download.py
ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ Π²ΠΎΠ»ΠΈΡΠ΅ Π½Ρ-3 ΠΎΡΠ»ΠΎΠ±Π°ΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π·Π°ΡΡΠ°Π²Ρ -n
Π΄Π° ΠΎΠ·Π½Π°ΡΠΈΡΠ΅ Π±ΡΠΎΡ ΠΈΠ·Π΄Π°ΡΠ°:
$ python download.py -n ns-3.29
ΠΠ°ΠΊΠΎΠ½ ΠΎΠ²ΠΎΠ³ ΠΊΠΎΡΠ°ΠΊΠ° Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½ Π±ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠ° Π΄ΠΎΠ΄Π°ΡΠ½Π° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° Π½Ρ-3, ΠΏΠ΅ΡΠΈ, ΠΏΠΈΠ±ΠΈΠ½Π΄Π³Π΅Π½ ΠΈ Π½Π΅ΡΠ°Π½ΠΈΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠΈΡΠΈ
ΠΠ° ΠΌΠ°ΡΠΈΠ½ΠΈ ΡΠ° ΡΠΈΡΡΠΈΠΌ Π£Π±ΡΠ½ΡΡ16.04, ΠΌΠΎΡΠ°ΠΎ ΡΠ°ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΠΎΠ²Ρ: $ sudo python3 download.py -n ns-3.29
(Ρ Π΄Π°ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΈΠΎΡΠ°).
3.3.1 Π£ΡΠΈΡΠ°Π²Π°ΡΠ΅ Π½Ρ-3 ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠ°ΠΊΠ΅
ΠΠΎΡΡΠ΅ Π΄Π²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π΅ (ΠΈΠ·Π²ΠΎΡΠ½Π° Π°ΡΡ ΠΈΠ²Π° ΠΈΠ»ΠΈ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½ ΠΏΡΠ΅ΠΊΠΎ ΠΠΈΡΠ°) ΠΊΠΎΡΠΈΡΠ½ΠΈ ΡΡ Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π½Π°ΡΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ΅ Π½Ρ-3 ΡΠ° Π²ΠΈΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊΠ° (ΠΏΠΈΠ±ΠΈΠ½Π΄Π³Π΅Π½ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π²Π΅Π·Π΅ ΠΈ Π½Π΅ΡΠ°Π½ΠΈΠΌ Π·Π° ΠΌΡΠ΅ΠΆΠ½Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΡΡ). ΠΠΎΠ·ΠΈΠ²Π° ΡΠ΅ ΡΡΠ΅ΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΎΠ±Π΅Π·Π±Π΅ΡΠ΅Π½ΠΎ Ρ Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½Ρ ΠΏΠ΅ΡΠΈ.
ΠΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π°Π»Π°Ρ Π·Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½Ρ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΠΎΡΡΠ²Π΅ΡΠ° ΠΈΠ· Π²ΠΈΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°, ΡΠ°Π·Π²ΠΈΡΠ΅Π½ Π·Π° Π½Ρ-3 ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ. ΠΠ΅ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈΡ Π²Π΅ΡΠ·ΠΈΡΠ° Π½Ρ-3, ΠΊΠ°ΠΎ ΠΈ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ Π½Ρ-3 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅ ΠΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ΄Π°, Π¦ΡΠ°Π΄Π»Π΅ΠΠ΅ΡΠ²ΠΎΡΠΊ Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΠΎΠ½ Π¦ΡΠ°Π΄Π»Π΅, ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° Π½ΠΎΠ²ΠΈΡ ΠΠΈΡΡ ΠΎΠ½ Π²Π΅Π·Π° ΠΈ ΡΠ°Π·Π½ΠΈΡ Π½Ρ-3 βΠ°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°β.
ΠΡΠΈΠΌΠ΅ΡΠΈΡΠΈ
Π¦ΡΠ°Π΄Π»Π΅ΠΠ΅ΡΠ²ΠΎΡΠΊ Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΠΎΠ½ Π¦ΡΠ°Π΄Π»Π΅ ΡΠ΅ ΠΎΠΊΠ²ΠΈΡ ΠΊΠΎΡΠΈ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²Π΅ Π’Π¦Π/ΠΠ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΡΠ½ΡΡΠ°Ρ ΠΌΡΠ΅ΠΆΠ½ΠΎΠ³ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ°.
ΠΠΊΠΎ ΠΎΡΠ΅ΠΊΡΡΠ΅ΡΠ΅ Π΄Π° Π²Π°ΡΠ° Π½Ρ-3 ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° ΠΈΠΌΠ° Π½Π°ΠΏΡΠ΅Π΄Π½Π΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ΄Π°ΡΠ½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ°ΡΠΈΡΠΈ ΠΎΠ²Ρ ΠΏΡΡΠ°ΡΡ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ΅.
Π£ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠΈΠΌ Π½Ρ-3 ΠΈΠ·Π΄Π°ΡΠΈΠΌΠ° ΠΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΠ΄Π°Ρ ΠΊΠ°ΡΡΠ°Π½ΡΠΊΠΎΠΌ ΠΈΠ·Π΄Π°ΡΡ. ΠΠ·Π΄Π°ΡΠ΅ ΡΠΊΡΡΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΊΠΎΡΠ° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π½ΡΡΠ½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ ΡΠΎΡΡΠ²Π΅ΡΠ° Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ·Π΄Π°Π²Π°ΡΠ°. Π’ΠΎ ΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΡΠ·ΠΈΡΠ° ΠΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΡΠΈ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΡΠ° ΠΈΠ·Π΄Π°ΡΠ΅ΠΌ Π½Ρ-3.29, ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΡΠΎ ΠΈΠ·Π΄Π°ΡΠ΅ Π½Ρ-3 ΠΈΠ»ΠΈ ΡΠ°Π½ΠΈΡΠ΅, Π°Π»ΠΈ ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΊΠ°ΡΠ½ΠΈΡΠ° ΠΈΠ·Π΄Π°ΡΠ° (Π°ΠΊΠΎ ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΎΠΏΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π±Π°ΠΊΠ΅ΡΠΎΠ½Ρ.ΠΊΠΌΠ» Π½ΠΈΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΎ).
Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠΈ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠΏΠΈΡΡ ΠΏΠ΅ΡΠΈΡΠ½ΠΎΡΠΎΠΌ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ Π²Π°ΡΡ ΠΠΈΠ½ΡΠΊ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ (ΠΏΠΎΠ΄ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΊΠΎΠΌ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΠΈΡ):
$ cd
$ mkdir workspace
$ cd workspace
$ git clone https://gitlab.com/nsnam/bake.git
ΠΠ°Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ Π³ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ΅Π³:
Cloning into 'bake'...
remote: Enumerating objects: 2086, done.
remote: Counting objects: 100% (2086/2086), done.
remote: Compressing objects: 100% (649/649), done.
remote: Total 2086 (delta 1404), reused 2078 (delta 1399)
Receiving objects: 100% (2086/2086), 2.68 MiB | 3.82 MiB/s, done.
Resolving deltas: 100% (1404/1404), done.
ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²ΡΡΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΡΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΈΠΌΠ΅Π½ΠΈΠΊ ΠΏΠ΅ΡΠΈ, ΡΠΈΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
$ cd bake
$ ls
bake bakeconf.xml bake.py doc examples generate-binary.py test TODO
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΡΠ΅ ΡΡΠΈΡΠ°Π»ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΠΈΡΡ ΠΎΠ½ ΡΠΊΡΠΈΠΏΡΠΈ, ΠΠΈΡΡ ΠΎΠ½ ΠΌΠΎΠ΄ΡΠ» ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ ΠΏΠ΅ΡΠΈ ΠΈ ΠΠ‘ΠΠ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ. Π‘Π»Π΅Π΄Π΅ΡΠΈ ΠΊΠΎΡΠ°ΠΊ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΎΠ²ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΈ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌ ΠΈΠ·Π±ΠΎΡΡ. ΠΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠΈΡΠ΅Π²Π° ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ°Π²Π°ΡΠ°:
-
Π½Ρ-3.29: ΠΌΠΎΠ΄ΡΠ» ΠΊΠΎΡΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° ΠΈΠ·Π΄Π°ΡΡ; ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ»ΠΈΡΠ½Π΅ ΠΈΠ·Π΄Π°ΡΡ Ρ ΡΠ°ΡΠ±Π°Π»Π»-Ρ;
-
Π½Ρ-3-Π΄Π΅Π²: ΡΠ»ΠΈΡΠ°Π½ ΠΌΠΎΠ΄ΡΠ», Π°Π»ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠ°Π·Π²ΠΎΡΠ½ΠΎΠ³ ΡΡΠ°Π±Π»Π°;
-
Π½Ρ-Π°Π»ΠΈΠ½ΠΎΠ½-3.29: ΠΠΎΠ΄ΡΠ» ΠΊΠΎΡΠΈ ΡΠΊΡΡΡΡΡΠ΅ Π΄ΡΡΠ³Π΅ Π΄ΠΎΠ΄Π°ΡΠ½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΡΡΠΌΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΊΠ»ΠΈΠΊΠΎΠ²Π° ΠΈ ΠΏΠΎΡΡΠΎΡΠ΅ Π·Π° ΠΌΡΠ΅ΠΆΠ½Ρ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡ, ΠΠΏΠ΅Π½ΡΠ»ΠΎΠ² Π·Π° Π½Ρ-3.
-
Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½: ΡΠ»ΠΈΡΠ½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΎΡ Π²Π΅ΡΠ·ΠΈΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π° ΡΡΠ΅Π»ΠΎ, Π°Π»ΠΈ Π·Π° ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄.
ΠΡΠΈΠΌΠ΅ΡΠΈΡΠΈ
Kliknite β ΠΌΠΎΠ΄ΡΠ»Π°ΡΠ½Π° ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΡΡΠ΅ΡΠ°.
ΠΠΏΠ΅Π½ΡΠ»ΠΎΠ² ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΠΌ ΠΎΠ±ΡΠ°Π΄Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡΠ΅ ΠΏΡΠ΅ΠΊΠΎ ΠΌΡΠ΅ΠΆΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΏΡΡΠ΅ΠΌ ΡΡΡΠ΅ΡΠ° ΠΈ ΡΠ²ΠΈΡΠ΅Π²Π°, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΡΠΈ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Ρ ΠΌΡΠ΅ΠΆΠ½Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ.
Π’ΡΠ΅Π½ΡΡΠ½ΠΈ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠ°ΠΊ (Π±Π΅Π· ΠΈΠ·Π΄Π°ΡΠ°) Π½Ρ-3 ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π½Π°ΡΠΈ Π½Π°:
ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΏΠΎΠΊΡΡΠ°Π²Π°ΡΡ Π΄Π° ΠΎΠ²Π° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΡ Ρ Π΄ΠΎΡΠ»Π΅Π΄Π½ΠΎΠΌ ΡΠ°Π΄Π½ΠΎΠΌ ΡΠ΅Π΄Ρ, Π°Π»ΠΈ ΠΎΠ½Π° ΡΡ Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ°Π·Π²ΠΎΡΠ° ΠΈ ΡΠ°Π΄ΡΠΆΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π²ΡΠ΅Π½ΠΈ ΠΊΠΎΠ΄, ΡΠ°ΠΊΠΎ Π΄Π° Π°ΠΊΠΎ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π½ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅, ΠΈΠ·Π°Π±Π΅ΡΠΈΡΠ΅ Π·Π²Π°Π½ΠΈΡΠ½ΠΎ ΠΈΠ·Π΄Π°ΡΠ΅.
ΠΠ°ΡΠ½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠΈ Π»ΠΈΡΡΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° ΠΈΠ»ΠΈ ΠΎΡΠΈΡΠΈ Π½Π° Π²Π΅Π± ΡΡΡΠ°Π½ΠΈΡΡ Π½Ρ-3 Π Π΅Π»Π΅Π°ΡΠ΅Ρ:
Π‘Π°Π΄Π°, Π΄Π° Π±ΠΈΡΠΌΠΎ Π΄ΠΎΠ±ΠΈΠ»ΠΈ Π½Ρ-3 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΊΠΎΡΠ΅ ΡΡ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½Π΅, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ Π°Π»Π°ΡΠΊΡ ΠΠ΅ΡΠΈΡΠ΅. Π Π΅ΡΠΈΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ²ΠΎΠ΄Π½ΠΈΡ ΡΠ΅ΡΠΈ ΠΎ Π΄Π΅Π»Ρ ΠΠ΅ΡΠΈΡΠ΅.
ΠΠ°ΠΊΠ΅ ΡΠ°Π΄ΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΡΠΈΡΠ°Π²Π° ΠΈΠ·Π²ΠΎΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΈΠ·Π²ΠΎΡ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ Π±ΡΠΈΠ»Π΄ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ. ΠΠ΅ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠ΅ΠΌ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΡΠ», Π°Π»ΠΈ Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΠ΅ΡΠΈΡΠ΅ Π½Π΅ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Ρ ββΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΎ, ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΠΈΠ²ΠΎ ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ ΠΏΡΡΠ°ΡΡ Π΄ΠΎ ΠΏΠ΅ΡΠΈ Π΄ΠΎ Π²Π°ΡΠ΅ ΠΏΡΡΠ°ΡΠ΅ (ΠΠΠ’Π₯ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π° ΠΎΠΊΡΡΠΆΠ΅ΡΠ°), Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½ (ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΠΈΠ½ΡΠΊ Π±Π°ΡΡ ΡΡ Π΅Π»Π»). ΠΠ΄ΠΈΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ βΠ±Π°ΠΊΠ΅β, Π° Π·Π°ΡΠΈΠΌ ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°:
$ export BAKE_HOME=`pwd`
$ export PATH=$PATH:$BAKE_HOME:$BAKE_HOME/build/bin
$ export PYTHONPATH=$PYTHONPATH:$BAKE_HOME:$BAKE_HOME/build/lib
ΠΠ²ΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π±Π°ΠΊΠ΅.ΠΏΠΈ Π½Π° ΠΏΡΡΠ°ΡΡ ΡΡΡΠΊΠ΅ ΠΈ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΠΌΠ° Π΄Π° ΠΏΡΠΎΠ½Π°ΡΡ ΠΈΠ·Π²ΡΡΠ½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΠΎ ΠΏΠ΅ΡΠΈ. Π£ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ° ΡΠΏΠΎΡΡΠ΅Π±Π΅ ΠΏΠ΅ΡΠΈ, Π³ΠΎΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° ΠΠΠ’Π₯ ΠΈ ΠΠΠ’Π₯ΠΠΠΠΠ’Π₯ Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π½Π°, Π°Π»ΠΈ ΡΠΎ ΠΎΠ±ΠΈΡΠ½ΠΎ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΠΎΡΠΏΡΠ½Π° ΠΈΠ·ΡΠ°Π΄Π° Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½Π° (ΡΠ° Π΄ΠΎΠ΄Π°ΡΠ½ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΈΠΌΠ°).
ΠΠ΄ΠΈΡΠ΅ Ρ ΡΠ²ΠΎΡ ΡΠ°Π΄Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΈ ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Ρ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ:
$ ./bake.py configure -e ns-3.29
Π‘Π»Π΅Π΄Π΅ΡΠ΅ ΡΠ΅ΠΌΠΎ ΠΏΠΈΡΠ°ΡΠΈ ΠΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΠΈΠΌΠ°ΠΌΠΎ Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ Π°Π»Π°ΡΠ° Π΄Π° ΡΡΠΈΡΠ°ΠΌΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅. ΠΠΎΠ·ΠΎΠ²ΠΈΡΠ΅:
$ ./bake.py check
Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ΅Π³:
> Python - OK
> GNU C++ compiler - OK
> Mercurial - OK
> Git - OK
> Tar tool - OK
> Unzip tool - OK
> Make - OK
> cMake - OK
> patch tool - OK
> Path searched for tools: /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin ...
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, Π°Π»Π°ΡΠΈ Π·Π° ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΠΠ΅ΡΡΡΡΠΈΠ°Π», Π¦ΠΠ‘, ΠΠΈΡ ΠΈ ΠΠ°Π·Π°Π°Ρ ΡΡ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ Ρ ΠΎΠ²ΠΎΠΌ ΠΊΠΎΡΠ°ΠΊΡ ΡΠ΅Ρ Π½Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΠ΄. Π£ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π°Π»Π°ΡΠ΅ ΠΊΠΎΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌ (Π°ΠΊΠΎ Π·Π½Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ) ΠΈΠ»ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΠΎΠΌΠΎΡ.
ΠΠ°ΡΠΈΠΌ ΠΏΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠ·ΠΌΠ΅ΡΠ΅ ΡΠΎΡΡΠ²Π΅Ρ:
$ ./bake.py download
ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π±ΠΈ ΡΡΠ΅Π±Π°ΠΎ Π±ΠΈΡΠΈ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ:
>> Searching for system dependency setuptools - OK
>> Searching for system dependency libgoocanvas2 - OK
>> Searching for system dependency gi-cairo - OK
>> Searching for system dependency pygobject - OK
>> Searching for system dependency pygraphviz - OK
>> Searching for system dependency python-dev - OK
>> Searching for system dependency qt - OK
>> Searching for system dependency g++ - OK
>> Downloading pybindgen-0.19.0.post4+ng823d8b2 (target directory:pybindgen) - OK
>> Downloading netanim-3.108 - OK
>> Downloading ns-3.29 - OK
Π’ΠΎ ΡΠ΅ Π·Π½Π°ΡΠΈΡΠΈ Π΄Π° ΡΡ ΠΏΡΠ΅ΡΠ·Π΅ΡΠ° ΡΡΠΈ ΠΈΠ·Π²ΠΎΡΠ°. Π‘Π°Π΄Π° ΠΈΠ΄ΠΈΡΠ΅ Ρ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΈ ΠΎΡΠΊΡΡΠ°ΡΡΠ΅ Π»Ρ; Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅:
$ cd source
$ ls
netanim-3.108 ns-3.29 pybindgen
Π‘Π°Π΄Π° ΡΡΠ΅ ΡΠΏΡΠ΅ΠΌΠ½ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Ρ-3 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡ.
3.4 ΠΠΎΠ½ΡΠ°ΠΆΠ° Π½Ρ-3
ΠΠ°ΠΎ ΠΈ ΠΊΠΎΠ΄ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ° Π½Ρ-3, ΠΏΠΎΡΡΠΎΡΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3. ΠΠ»Π°Π²Π½Π° ΡΡΠ²Π°Ρ ΠΊΠΎΡΡ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° Π½Π°Π³Π»Π°ΡΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ Π½Ρ-3 Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΡ Π°Π»Π°ΡΠ° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΡΠ·Π² ΠΠ°ΡΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΈΡΠΏΠΎΠ΄. ΠΠ΅ΡΠΈΠ½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΡΠ° ΠΠ°Ρ, Π°Π»ΠΈ ΠΏΠΎΡΡΠΎΡΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π³ΠΎΠ΄Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΈ ΠΊΠΎΡΠ΅ ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΡΠ΅ΡΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΈΠ·ΡΠ°Π΄Π΅. ΠΠ°ΡΠΎ Π²Π°Ρ ΠΌΠΎΠ»ΠΈΠΌ, ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ ΠΎ ΠΠ°Ρ, ΠΠΎΠ³Π»Π΅Π΄Π°Ρ Π±ΡΠΈΠ»Π΄.ΠΏΠΈ ΠΈ ΠΌΠΎΠ½ΡΠ°ΠΆΠ° ΡΠ° ΠΏΠ΅ΡΠΈ.
3.4.1 ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ° Π±ΡΠΈΠ»Π΄.ΠΏΠΈ
Π£ΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ΅! ΠΠ²Π°Ρ ΠΊΠΎΡΠ°ΠΊ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ°Π½ ΡΠ°ΠΌΠΎ ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ½Π΅ Π°ΡΡ ΠΈΠ²ΡΠΊΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ΅Π½Π΅ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π³ΠΎΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ; Π° Π½Π΅ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° ΡΠ΅ ΠΏΡΡΠ΅ΠΌ Π³ΠΈΡ-Π° ΠΈΠ»ΠΈ Π±Π°ΠΊΠ΅-Π°.
ΠΠ°Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ° Π°ΡΡ ΠΈΠ²ΠΎΠΌ ΠΈΠ·Π΄Π°ΡΠ° ΡΠ°ΡΠ±Π°Π»Π»Π£ Π½Ρ-3-Π°Π»ΠΈΠ½ΠΎΠ½ ΠΠΎΡΡΠΎΡΠΈ Π·Π³ΠΎΠ΄Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ ΠΎΠ»Π°ΠΊΡΠ°ΡΠΈ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ. ΠΠΎΠ²Π΅ ΡΠ΅ Π±ΡΠΈΠ»Π΄.ΠΏΠΈ. ΠΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π·Π° Π²Π°Ρ Π½Π° Π½Π°ΡΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π½Π°ΡΠΈΠ½. ΠΠ΅ΡΡΡΠΈΠΌ, ΠΈΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΈ ΡΠ°Π΄ ΡΠ° Π½Ρ-3 ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠΊΡΡΡΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Ρ-3 ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΠ³ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅, ΠΠ°Ρ, ΠΊΠΎΡΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ΅Π½ ΠΊΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡΡ.
ΠΠΊΠΎ ΡΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅Π»ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ°ΡΠ±Π°Π»Π», Π° Π·Π°ΡΠΈΠΌ Ρ Π²Π°ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈΠΊΡ ~/ΡΠ°Π΄Π½ΠΈ ΠΏΡΠΎΡΡΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ° ΠΈΠΌΠ΅Π½ΠΎΠΌ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ Π½Ρ-Π°Π»ΠΈΠ½ΠΎΠ½-3.29. Π£Π½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
$ ./build.py --enable-examples --enable-tests
ΠΠ°Π΄Π° ΡΠ΅ Π·ΠΎΠ²Π΅ Π±ΡΠΈΠ»Π΄.ΠΏΠΈ ΠΠΎΡΠΈΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π΄Π° Π±ΠΈΡΠΌΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡΡ, Π° ΠΊΠΎΡΠΈ Π½ΠΈΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ΠΈ Ρ Π½Ρ-3. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΡΠ°ΠΊΠΎΡΠ΅ Π³ΡΠ°Π΄ΠΈ ΡΠ²Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅. ΠΠ°ΡΠΈΠΌ, Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Ρ-3 Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΡΠ΅ΡΡΠΎΠ²Π°, ΠΈΠ»ΠΈ Π΄Π° ΠΈΡΠΊΡΡΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΊΠΎΡΠΈ Π²Π°ΠΌ Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΡΠ°Π΄.
ΠΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π»Π°Π·Π½ΠΈΡ ΠΏΠΎΡΡΠΊΠ° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ° ΠΊΠΎΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π΄ΠΎΠΊ Π³ΡΠ°Π΄ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π΄Π΅Π»ΠΎΠ²Π΅ ΠΊΠΎΡΠ΅ ΡΡΠ΅ ΡΡΠΈΡΠ°Π»ΠΈ. ΠΡΠ²ΠΎ ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΎ ΠΏΠΎΠΊΡΡΠ°ΡΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ° Π½Π΅ΡΠ°Π½ΠΈΠΌ, Π·Π°ΡΠΈΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π²Π΅Π·ΠΈΠ²Π°ΡΠ° ΠΏΠΈΠ±ΠΈΠ½Π΄Π³Π΅Π½ ΠΈ Π½Π° ΠΊΡΠ°ΡΡ Π½Ρ-3. ΠΠ°Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ Π·Π°Π²ΡΡΠΈ, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
Waf: Leaving directory '/path/to/workspace/ns-allinone-3.29/ns-3.29/build'
'build' finished successfully (6m25.032s)
Modules built:
antenna aodv applications
bridge buildings config-store
core csma csma-layout
dsdv dsr energy
fd-net-device flow-monitor internet
internet-apps lr-wpan lte
mesh mobility mpi
netanim (no Python) network nix-vector-routing
olsr point-to-point point-to-point-layout
propagation sixlowpan spectrum
stats tap-bridge test (no Python)
topology-read traffic-control uan
virtual-net-device visualizer wave
wifi wimax
Modules not built (see ns-3 tutorial for explanation):
brite click openflow
Leaving directory ./ns-3.29
Π£ ΠΏΠΎΡΠ»Π΅Π΄ΡΠ° ΡΡΠΈ ΡΠ΅Π΄Π° Π»ΠΈΡΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΠΊΡ ΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈΠΌΠ° ΠΊΠΎΡΠΈ Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ΠΈ:
Modules not built (see ns-3 tutorial for explanation):
brite click
Π’ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° Π½Π΅ΠΊΠΈ Π½Ρ-3 ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΠΎΡΠΈ Π·Π°Π²ΠΈΡΠ΅ ΠΎΠ΄ Π΅ΠΊΡΡΠ΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΄Π° Π½ΠΈΡΡ ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π° Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π΄Π° Π±ΡΠ΄Ρ ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½ΠΈ Π·Π° ΠΎΠ²Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ. Π’ΠΎ Π½Π΅ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠ°Π²ΡΠ΅Π½ ΠΈΠ»ΠΈ Π΄Π° ΡΠΊΠ»ΠΎΠΏΡΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ.
3.4.2 ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ° ΠΠ°ΠΊΠ΅
ΠΠΊΠΎ ΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ Π±Π°ΠΊΠ΅ ΠΈΠ·Π½Π°Π΄ Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° ΠΏΡΠΎΡΠ΅ΠΊΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ Π΄Π° Π³Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3. ΠΠΎΠ·ΠΎΠ²ΠΈΡΠ΅:
$ ./bake.py build
ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ:
>> Building pybindgen-0.19.0.post4+ng823d8b2 - OK
>> Building netanim-3.108 - OK
>> Building ns-3.29 - OK
Π’ΠΎΠΎΠ»ΡΠΈΠΏ: Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π΄Π° ΡΡΠ°Π΄ΠΈΡΠ΅ ΠΈ ΠΊΠΎΡΠ°ΠΊΠ΅ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ° ΠΈ ΠΏΡΠ°Π²ΡΠ΅ΡΠ° ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΠΎΠ·Π²Π°ΡΠΈ βΠ±Π°ΠΊΠ΅.ΠΏΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈβ.
Π‘ΠΊΠ»Π°ΠΏΠ°ΡΠ΅ ΡΠ²ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΌΠΎΠΆΠ΄Π° Π½Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠΈ, Π°Π»ΠΈ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠ΅ ΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ Π°ΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎ ΡΠ΅ Π±ΠΈΠ»ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡΠΈΠ²ΠΎΡΡΠΈ ΡΠ°ΡΡΠΊΠΌΠ» ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΡΠ°ΡΡΠ°Π²ΠΈΡΠΈ ΠΏΠΎΠΌΠΎΡΡ Π°Π»Π°ΡΠ° ΠΏΠ΅ΡΠΈ Π½Π΅ Π½Π° ΡΠ²ΠΈΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠΈ ΠΏΠΎΡΡΠΊΠ° ΠΏΠΎΠΏΡΡ ΠΎΠ²Π΅:
>> Building castxml - Problem
> Problem: Optional dependency, module "castxml" failed
This may reduce the functionality of the final build.
However, bake will continue since "castxml" is not an essential dependency.
For more information call bake with -v or -vvv, for full verbose mode.
ΠΠ»ΠΈ ΡΠ°ΡΡΠΊΠΌΠ» ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½Π΅ ΠΠΈΡΡ ΠΎΠ½ Π²Π΅Π·Π΅. ΠΠ° Π²Π΅ΡΠΈΠ½Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π·Π° ΠΎΠ²ΠΈΠΌ Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π΅ (Π±Π°Ρ Π΄ΠΎΠΊ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Π½Ρ-3), ΠΏΠ° ΡΠ΅ ΡΠ°ΠΊΠ²Π° ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ° Π·Π° ΡΠ°Π΄Π° ΠΌΠΎΠ³Ρ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΡΠΈ.
ΠΠΊΠΎ Π½Π΅ ΡΡΠΏΠ΅, ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π²Π°ΠΌ Π΄Π°ΡΠΈ Π½Π°Π³ΠΎΠ²Π΅ΡΡΠ°Ρ ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΠΌ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΠΌΠ°:
$ ./bake.py show
ΠΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΡΡΠ°Π²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅.
3.4.3 ΠΠ°ΠΏΡΠ°Π²ΠΈ ΡΠ° ΠΠ°Ρ-ΠΎΠΌ
ΠΠΎ ΠΎΠ²Π΅ ΡΠ°ΡΠΊΠ΅, Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΏΠΎΡΠ΅Π»ΠΈ Π΄Π° Π³ΡΠ°Π΄ΠΈΠΌΠΎ Π½Ρ-3, ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΡ Π±ΡΠΈΠ»Π΄.ΠΏΠΈ, ΠΈΠ»ΠΈ Π°Π»Π°Ρ ΠΏΠ΅ΡΠΈ. ΠΠ²ΠΈ Π°Π»Π°ΡΠΈ ΡΡ ΠΊΠΎΡΠΈΡΠ½ΠΈ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3 ΠΈ ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π£ ΡΡΠ²Π°ΡΠΈ, Π΄Π° Π±ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ, ΠΏΠΎΠΊΡΠ΅ΡΡ Π°Π»Π°Ρ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΠΠ°Ρ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π½Ρ-3. ΠΠ°Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΡΠ° Π½Ρ-3 ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ΅ΡΠΈΠ½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π±ΡΠ·ΠΎ ΠΏΡΠ΅Π»Π°Π·ΠΈ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½Ρ ΡΠΏΠΎΡΡΠ΅Π±Ρ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΊΠ»Π°ΠΏΠ°ΡΠ΅ Π½Ρβ3 ΠΠ°Ρ. ΠΠ°ΠΊΠ»Π΅, Π΄Π° Π±ΠΈΡΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ, ΠΈΠ΄ΠΈΡΠ΅ Ρ Π½Ρ-3 Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΊΠΎΡΠΈ ΡΡΠ΅ ΠΏΡΠ²ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ.
ΠΠ²ΠΎ Ρ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ Π½ΠΈΡΠ΅ ΡΡΡΠΈΠΊΡΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, Π°Π»ΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΌΠ°Π»ΠΎ Π²ΡΠ°ΡΠΈΡΠ΅ ΡΠ½Π°Π·Π°Π΄ ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ°. ΠΠ΅ΡΠΎΠ²Π°ΡΠ½ΠΎ Π½Π°ΡΠΊΠΎΡΠΈΡΠ½ΠΈΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²Π΅ΡΠ·ΠΈΡΡ ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π»ΠΈ ΡΠ²ΠΎΡ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π²Π΅ΡΠ·ΠΈΡΡ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΈΠ»ΠΈ ΠΠ°Ρ-Ρ Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠ°Π²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠΊΡΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΌΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
$ ./waf clean
$ ./waf configure --build-profile=optimized --enable-examples --enable-tests
ΠΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΠ°Ρ ΠΈΠ·Π²Π°Π½ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠ³ ΠΈΠΌΠ΅Π½ΠΈΠΊΠ° (ΡΠ°Π΄ΠΈ Π²Π°ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡΠΈ). ΠΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΡΡΠΈ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅, ΠΎΠ²ΠΎ ΠΎΠ±ΠΈΡΠ½ΠΎ Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ, Π°Π»ΠΈ ΡΠ΅ Π΄ΠΎΠ±ΡΠ° ΠΏΡΠ°ΠΊΡΠ° (ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΠ»Π΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΠΈΡΠΏΠΎΠ΄); ΠΎΠ²ΠΎ ΡΠ΅ ΠΈΠ·Π±ΡΠΈΡΠ°ΡΠΈ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ Π±ΡΠΈΠ»Π΄ /. ΠΠ°Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π»Π°Π· ΡΠ»ΠΈΡΠ°Π½ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ:
Setting top to : /home/ns3user/workspace/bake/source/ns-3-dev
Setting out to : /home/ns3user/workspace/bake/source/ns-3-dev/build
Checking for 'gcc' (C compiler) : /usr/bin/gcc
Checking for cc version : 7.3.0
Checking for 'g++' (C++ compiler) : /usr/bin/g++
Checking for compilation flag -march=native support : ok
Checking for compilation flag -Wl,--soname=foo support : ok
Checking for compilation flag -std=c++11 support : ok
Checking boost includes : headers not found, please ,!provide a --boost-includes argument (see help)
Checking boost includes : headers not found, please ,!provide a --boost-includes argument (see help)
Checking for program 'python' : /usr/bin/python
Checking for python version >= 2.3 : 2.7.15 python-config : /usr/bin/python-config
Asking python-config for pyembed '--cflags --libs --ldflags' flags : yes
Testing pyembed configuration : yes
Asking python-config for pyext '--cflags --libs --ldflags' flags : yes
Testing pyext configuration : yes
Checking for compilation flag -fvisibility=hidden support : ok
Checking for compilation flag -Wno-array-bounds support : ok
Checking for pybindgen location : ../pybindgen ,!(guessed)
Checking for python module 'pybindgen' : 0.19.0. ,!post4+g823d8b2
Checking for pybindgen version : 0.19.0. ,!post4+g823d8b2
Checking for code snippet : yes
Checking for types uint64_t and unsigned long equivalence : no
Checking for code snippet : no
Checking for types uint64_t and unsigned long long equivalence : yes
Checking for the apidefs that can be used for Python bindings : gcc-LP64
Checking for internal GCC cxxabi : complete
Checking for python module 'pygccxml' : not found
Checking for click location : not found
Checking for program 'pkg-config' : /usr/bin/pkg- ,!config
Checking for 'gtk+-3.0' : not found
Checking for 'libxml-2.0' : yes
checking for uint128_t : not found
checking for __uint128_t : yes
Checking high precision implementation : 128-bit integer ,!(default)
Checking for header stdint.h : yes
Checking for header inttypes.h : yes
Checking for header sys/inttypes.h : not found
Checking for header sys/types.h : yes
Checking for header sys/stat.h : yes
Checking for header dirent.h : yes
Checking for header stdlib.h : yes
Checking for header signal.h : yes
Checking for header pthread.h : yes
Checking for header stdint.h : yes
Checking for header inttypes.h : yes
Checking for header sys/inttypes.h : not found
Checking for library rt : yes
Checking for header sys/ioctl.h : yes
Checking for header net/if.h : yes
Checking for header net/ethernet.h : yes
Checking for header linux/if_tun.h : yes
Checking for header netpacket/packet.h : yes
Checking for NSC location : not found
Checking for 'sqlite3' : not found
Checking for header linux/if_tun.h : yes
Checking for python module 'gi' : 3.26.1
Checking for python module 'gi.repository.GObject' : ok
Checking for python module 'cairo' : ok
Checking for python module 'pygraphviz' : 1.4rc1
Checking for python module 'gi.repository.Gtk' : ok
Checking for python module 'gi.repository.Gdk' : ok
Checking for python module 'gi.repository.Pango' : ok
Checking for python module 'gi.repository.GooCanvas' : ok
Checking for program 'sudo' : /usr/bin/sudo
Checking for program 'valgrind' : not found
Checking for 'gsl' : not found python-config : not found
Checking for compilation flag -fstrict-aliasing support : ok
Checking for compilation flag -fstrict-aliasing support : ok
Checking for compilation flag -Wstrict-aliasing support : ok
Checking for compilation flag -Wstrict-aliasing support : ok
Checking for program 'doxygen' : /usr/bin/doxygen
---- Summary of optional ns-3 features:
Build profile : optimized
Build directory :
BRITE Integration : not enabled (BRITE not enabled (see option --with- ,!brite))
DES Metrics event collection : not enabled (defaults to disabled)
Emulation FdNetDevice : enabled
Examples : enabled
File descriptor NetDevice : enabled
GNU Scientific Library (GSL) : not enabled (GSL not found)
Gcrypt library : not enabled
(libgcrypt not found: you can use ,!libgcrypt-config to find its location.) GtkConfigStore : not enabled (library 'gtk+-3.0 >= 3.0' not fou nd)
MPI Support : not enabled (option --enable-mpi not selected)
ns-3 Click Integration : not enabled (nsclick not enabled (see option --with- ,!nsclick))
ns-3 OpenFlow Integration : not enabled (Required boost libraries not found)
Network Simulation Cradle : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice : not enabled (PlanetLab operating system not detected ,!(see option --force-planetlab)) PyViz visualizer : enabled
Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)
Python Bindings : enabled
Real Time Simulator : enabled
SQlite stats data output : not enabled (library 'sqlite3' not found)
Tap Bridge : enabled
Tap FdNetDevice : enabled
Tests : enabled
Threading Primitives : enabled
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
XmlIo : enabled
'configure' finished successfully (6.387s)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ ΠΏΠ°ΠΆΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈ Π΄Π΅ΠΎ Π»ΠΈΡΡΠ΅ ΠΈΠ·Π½Π°Π΄. ΠΠ΅ΠΊΠ΅ Π½Ρ-3 ΠΎΠΏΡΠΈΡΠ΅ Π½ΠΈΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π΅ ΠΈΠ»ΠΈ ΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° ΠΏΠΎΠ΄ΡΡΠΊΠ° Π΄Π° Π±ΠΈ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π»Π΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π±ΠΈΡΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ ΠΡΠΌΠ»Π’ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΏΡΠΈΡΡΡΠ½Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ±ΠΊΠΌΠ»-2.0. ΠΠΊΠΎ ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠ΅Π½Π° ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ° Π½Ρ-3 ΡΡΠ½ΠΊΡΠΈΡΠ° Π½ΠΈΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π°, Π±ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½Π° ΠΏΠΎΡΡΠΊΠ°. Π’Π°ΠΊΠΎΡΠ΅ ΠΈΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ΄ΠΎ Π΄Π° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠΈΠ»ΠΈ ΡΡΠΈΠ΄ Π±ΠΈΡ βΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΠ Π³ΡΡΠΏΠ΅ Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ·Π²ΠΎΡΠ΅ΡΠ°β Π·Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π½ΠΈΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π° ΠΈ ΡΡΠΎΠ³Π° ΡΠ΅ ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΏΠΎΡΠ°Π²ΡΡΡΠ΅ ΠΊΠ°ΠΎ βΠ½ΠΈΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π°β. ΠΠ° ΠΊΡΠ°ΡΡ, Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ±ΠΈΠ»ΠΈ Π»ΠΈΡΡΡ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½ΠΈΡ
ΠΎΠΏΡΠΈΡΠ°, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΠ°Ρ ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ --check-config
.
ΠΡΠ°ΡΠΈΠΌΠΎ ΡΠ΅ ΡΠ°Π΄Π° ΠΈ Π²ΡΠ°ΡΠΈΠΌΠΎ ΡΠ΅ Π½Π° Π²Π΅ΡΠ·ΠΈΡΡ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΠΊΠΎΡΠ° ΡΠ°Π΄ΡΠΆΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅.
$ ./waf clean
$ ./waf configure --build-profile=debug --enable-examples --enable-tests
Π‘ΠΈΡΡΠ΅ΠΌ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ΅ ΡΠ°Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Π½Ρ-3 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΠΌ ΡΠΏΠΈΡΠΈΠ²Π°ΡΠ΅ΠΌ:
$ ./waf
ΠΠΎΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΊΠΎΡΠ°ΡΠΈ ΡΡ Π²Π°Ρ ΠΌΠΎΠΆΠ΄Π° Π½Π°ΡΠ΅ΡΠ°Π»ΠΈ Π΄Π° Π΄Π²Π° ΠΏΡΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅ΠΎ Π½Ρ-3 ΡΠΈΡΡΠ΅ΠΌΠ°, Π°Π»ΠΈ ΡΠ°Π΄Π° Π·Π½Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠ΄.
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ ΠΊΠΎΡΠΈ ΠΏΡΠΎΡΠΈΠ» ΡΠ΅ Π°ΠΊΡΠΈΠ²Π°Π½ Π·Π° Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΠΊΡΠ°, ΠΏΠΎΡΡΠΎΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ ./waf --check-profile
Waf: Entering directory `/path/to/ns-3-allinone/ns-3.29/build'
Build profile: debug
ΠΠΎΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΎ Π±ΡΠΈΠ»Π΄.ΠΏΠΈ ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ --enable-examples
ΠΈ --enable-tests
, Π°Π»ΠΈ Π΄ΡΡΠ³Π΅ ΠΎΠΏΡΠΈΡΠ΅ ΠΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²ΠΎ Π½Π΅ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ:
$ ./build.py --disable-python
ΡΠ΅Π°ΠΊΡΠΈΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ ΠΎΠ²Π°ΠΊΠ²Π°:
build.py: error: no such option: --disable-python
ΠΠ΅ΡΡΡΠΈΠΌ, ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ -- ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΏΡΠΎΡΠ»Π΅ΡΠΈΠ²Π°ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ° ΠΏΡΡΠ΅ΠΌ ΠΠΠ€ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΡΠΎ Π³ΠΎΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΠ³ ΡΠ°Π΄ΠΈΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ ./build.py -- --disable-python
ΡΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ΅ Π³Π»Π°Π²Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ./Π²Π°Ρ ΡΠΎΠ½ΡΠΈΠ³ΡΡΠ΅ --Π΄ΠΈΡΠ°Π±Π»Π΅-ΠΏΠΈΡΡ ΠΎΠ½. ΠΠ²ΠΎ ΡΠΎΡ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ²ΠΎΠ΄Π½ΠΈΡ ΡΠ°Π²Π΅ΡΠ° ΠΎ ΠΠ°Ρ.
Π ΡΠΊΠΎΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΠΌΠ° Ρ ΠΈΠ·Π³ΡΠ°Π΄ΡΠΈ
Π½Ρ-3 ΠΈΠ·Π΄Π°ΡΠ° ΡΡ ΡΠ΅ΡΡΠΈΡΠ°Π½Π° Π½Π° Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠΈΠΌ Π¦++ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈΠΌ Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ° Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΈΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΠΌΠ° ΠΠΈΠ½ΡΠΊΠ° ΠΈ ΠΠ°ΡΠΠ‘-Π°. ΠΠ΅ΡΡΡΠΈΠΌ, ΡΠΎΠΊΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π°, Π½ΠΎΠ²Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΡΡΡ ΡΠ° Π½ΠΎΠ²ΠΈΠΌ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΈΠΎΡΠΈΠΌΠ°, Π° ΠΎΠ²ΠΈ Π½ΠΎΠ²ΠΈΡΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΈ ΠΈΠΌΠ°ΡΡ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡΡ Π΄Π° Π±ΡΠ΄Ρ ΠΏΠ΅Π΄Π°Π½ΡΠΈΡΠ½ΠΈΡΠΈ Ρ Π²Π΅Π·ΠΈ ΡΠ° ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠΈΠΌΠ°. Π½Ρ-3 ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ ΡΠ²ΠΎΡΡ Π²Π΅ΡΠ·ΠΈΡΡ ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ²Π° ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΠΎ Π³ΡΠ΅ΡΠΊΠ΅, ΡΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΡ Π²Π΅ΡΠ·ΠΈΡΡ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ° ΠΌΠΎΠΆΠ΅ Π·Π°ΡΡΡΠ°Π²ΠΈΡΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΠ»ΠΎ ΠΈΠ·Π΄Π°ΡΠ΅ Π½Ρβ3.28 Π·Π° Π€Π΅Π΄ΠΎΡΠ° 28, ΠΊΠΎΡΠ΅ ΡΠ΅ ΡΠΊΡΡΡΠΈΠ²Π°Π»ΠΎ Π½ΠΎΠ²Ρ Π³Π»Π°Π²Π½Ρ Π²Π΅ΡΠ·ΠΈΡΡ ΠΠ¦Π¦ (Π³ΡΡ-8). ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΡΠ°Π²ΡΠ΅ΡΠ° ΠΈΠ·Π΄Π°ΡΠ° Π½Ρ-3.28 ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠΈΡ Π²Π΅ΡΠ·ΠΈΡΠ° ΠΏΠΎΠ΄ Π€Π΅Π΄ΠΎΡΠ° 28, ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΠΌ ΠΡΠΊ2+, ΠΏΠΎΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ° Π³ΡΠ΅ΡΠΊΠ°:
/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h:59:8: error: unnecessary parentheses ,!in declaration of β__gtk_reserved1β [-Werror=parentheses] void (*__gtk_reserved1);
Π£ ΠΈΠ·Π΄Π°ΡΠΈΠΌΠ° ΠΊΠΎΡΠ° ΠΏΠΎΡΠΈΡΡ ΠΎΠ΄ Π½Ρβ3.28.1, ΠΈΠ½ ΠΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ ΠΎΠΏΡΠΈΡΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ½Π΅ΠΌΠΎΠ³ΡΡΠ°Π²Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ΅ "-ΠΠ΅ΡΡΠΎΡ" Ρ Π³++ ΠΈ ΡΠ»Π°Π½Π³++. ΠΠ²ΠΎ ΡΠ΅ ΠΎΠΏΡΠΈΡΠ° "--Π΄ΠΈΡΠ°Π±Π»Π΅-Π²Π΅ΡΡΠΎΡ" ΠΈ ΠΌΠΎΡΠ° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ ΡΠΎΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅:
$ ./waf configure --disable-werror --enable-examples --enable-tests
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠ°Π²ΠΈΡΠ΅
ΠΠ΅ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΠ°Ρ ΠΈΠΌΠ°ΡΡ ΡΠΌΠΈΡΠ»Π° ΡΠ°ΠΌΠΎ Ρ ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, Π° Π½Π΅ΠΊΠΈ ΡΡ Π²Π°ΠΆΠ΅ΡΠΈ ΡΠ°ΠΌΠΎ Ρ ΡΠ°Π·ΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ Π΅ΠΌΡΠ»Π°ΡΠΈΡΠ΅ Π½Ρ-3, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ Π±ΠΈΡΠ° Π‘ΡΠΈΠ΄ ΠΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΡΠ΄ΠΎ, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π³ΠΎΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ. ΠΠ²ΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°Π·Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, ΠΈ ΡΡΠΎΠ³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠ° ΡΠ°ΠΊΠΎΡΠ΅ ΡΠΊΡΡΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅.
$ ./waf configure --enable-sudo --enable-examples --enable-tests
ΠΠΊΠΎ ΡΡΠ°Π΄ΠΈΡΠ΅ ΠΎΠ²ΠΎ ΠΠ°Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ΅ ΡΡΠ΄ΠΎΠ΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΊΠ΅ΡΠ° Π·Π° Π΅ΠΌΡΠ»Π°ΡΠΈΡΡ ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΡ ΡΠ° Π΄ΠΎΠ·Π²ΠΎΠ»Π°ΠΌΠ° ΠΊΠΎΡΠ΅Π½. Π£ ΠΠ°Ρ ΠΠΎΡΡΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ ΠΎΠΏΡΠΈΡΠ° Π·Π° ΠΊΠΎΡΠ°ΠΊΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΈΡΡΡΠ°ΠΆΠΈΠ»ΠΈ ΡΠ²ΠΎΡΠ΅ ΠΎΠΏΡΠΈΡΠ΅, ΡΠ½Π΅ΡΠΈΡΠ΅:
$ ./waf --help
Π£ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΎΠ΄Π΅ΡΠΊΡ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ Π½Π΅ΠΊΠ΅ ΠΎΠΏΡΠΈΡΠ΅ Π²Π΅Π·Π°Π½Π΅ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅.
ΠΠΎΠ½ΡΠ°ΠΆΠ½ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ
ΠΠ΅Ρ ΡΠΌΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΠ°Ρ Π·Π° ΡΠΊΡΠΏΡΡΠΈΠ½Π΅ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΠΈ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½ΠΎ:
$ ./waf --build-profile=debug
ΠΠΎΡΡΠΎΡΠΈ ΠΈ ΡΡΠ΅Π΄ΡΠΈ ΠΌΠΎΠ½ΡΠ°ΠΆΠ½ΠΈ ΠΏΡΠΎΡΠΈΠ», ΠΎΡΠΏΡΡΡΠΈΡΠ΅. ΠΠΏΡΠΈΡΠ° -d
ΡΠ΅ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ Π·Π° --build-profile
. ΠΡΠΎΡΠΈΠ» ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Ρ Π»ΠΎΠ³ΠΎΠ²Π°ΡΠ°, ΡΠ²ΡΠ΄ΡΠΈ ΠΈ ΠΏΡΠ΅ΠΊΠΈΠ΄Π°ΡΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ°:
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ²ΡΠ΄ΡΠ΅ ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΠ°ΠΌΠΎ Ρ Π²Π΅ΡΠ·ΠΈΡΠ°ΠΌΠ° Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°. ΠΡΠ΅ΠΏΠΎΡΡΡΠ΅Π½Π° ΠΏΡΠ°ΠΊΡΠ° ΡΠ΅ Π΄Π° ΡΠ°Π·Π²ΠΈΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΡ Ρ ΡΠ΅ΠΆΠΈΠΌΡ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°, Π° Π·Π°ΡΠΈΠΌ ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΡΠ΅Π½Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° (Π·Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ°) Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½ΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Ρ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΠΌΠ° ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΎ Π·Π° ΠΎΠΌΠΎΡΠ°Ρ ΠΊΠΎΠ΄Π°:
NS_BUILD_DEBUG (std::cout << "Part of an output line..." << std::flush; timer.Start ,!()); DoLongInvolvedComputation ();
NS_BUILD_DEBUG (timer.Stop (); std::cout << "Done: " << timer << std::endl;)
Π£ΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΎ, ΠΠ°Ρ ΠΏΠΎΡΡΠ°Π²ΡΠ° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π·Π° ΠΈΠ·Π³ΡΠ°Π΄ΡΡ. ΠΠΎΠΌΠΎΡΡ ΠΎΠΏΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ -β―-out
, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ:
$ ./waf configure --out=my-build-dir
ΠΠΎΠΌΠ±ΠΈΠ½ΡΡΡΡΠΈ ΠΎΠ²ΠΎ ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΠΌΠ° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π°ΠΊΠΎ Π΄Π° ΠΏΡΠ΅Π»Π°Π·ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ ΠΎΠΏΡΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ΅:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
...
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf build
...
Π¨ΡΠΎ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ° Π²ΠΈΡΠ΅ ΡΠΊΠ»ΠΎΠΏΠΎΠ²Π° Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄Π° ΡΠ²Π°ΠΊΠΈ ΠΏΡΡ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠΈ ΡΠΊΠ»ΠΎΠΏ. ΠΠ°Π΄Π° ΠΏΡΠ΅ΡΠ΅ΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΡΠΈΠ», ΠΠ°Ρ ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π³Π°, Π±Π΅Π· ΠΏΠΎΡΠΏΡΠ½ΠΎΠ³ ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ°.
ΠΠ°Π΄Π° ΠΌΠ΅ΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Π΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Π½Π° ΠΎΠ²Π°Ρ Π½Π°ΡΠΈΠ½, ΠΌΠΎΡΠ°ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠ°ΠΆΡΠΈΠ²ΠΈ Π΄Π° ΡΠ²Π°ΠΊΠΈ ΠΏΡΡ Π΄Π°ΡΠ΅ ΠΈΡΡΠ΅ ΠΎΠΏΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅. ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π²Π°ΡΠΈΡΠ°Π±Π»ΠΈ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ΅:
$ export NS3CONFIG="--enable-examples --enable-tests"
$ export NS3DEBUG="--build-profile=debug --out=build/debug"
$ export NS3OPT=="--build-profile=optimized --out=build/optimized"
$ ./waf configure $NS3CONFIG $NS3DEBUG
$ ./waf build
...
$ ./waf configure $NS3CONFIG $NS3OPT
$ ./waf build
ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΈ ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΡΠ΅
Π£ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΈΠΌΠ° ΠΠ°Ρ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3 ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π¦++ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ ΠΈΠ· ΠΠ¦Π¦ ( Π³ ++). ΠΠ΅ΡΡΡΠΈΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ ΠΎΠ½Π°Ρ ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΠ°Ρ Π¦++ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ΠΌ Π¦ΠΠ‘ΠΠ‘ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π¦++ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ Π¦Π»Π°Π½Π³, ΡΠ»Π°Π½Π³++,
$ CXX="clang++" ./waf configure
$ ./waf build
ΠΠ° ΠΈΡΡΠΈ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠΈ ΠΠ°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π΄ΠΈΡΡΡΡ:
$ CXX="distcc g++" ./waf configure
$ ./waf build
ΠΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎ Π΄ΠΈΡΡΡΡ ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° Ρ ΠΎΠ΄Π΅ΡΠΊΡ ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°. ΠΠ° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ΄Π°Π»ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ° Π½Ρ-3, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° Π¦ΠΠ‘ΠΠ‘Π€ΠΠΠΠ‘_ΠΠΠ‘Π’Π Π.
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°
ΠΠ°Ρ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΠ½ΠΈ ΡΠ°ΡΠ»ΠΎΠ²ΠΈ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ Π³ΡΠ°Π΄ΠΈΡΠΈ, Π° ΠΏΠΎΡΡΠΎ ΠΠ°Ρ Π·Π½Π° Π»ΠΎΠΊΠ°ΡΠΈΡΡ ΠΎΠ²ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈ ΠΈΠ·Π²ΡΡΠ½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π±ΠΈΠ»ΠΎ Π³Π΄Π΅ Π΄ΡΡΠ³Π΄Π΅.
ΠΠΊΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π²ΠΈΡΠ΅ Π²ΠΎΠ»Π΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡ Π²Π°Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΠΈΠ·Π³ΡΠ°Π΄ΡΡ, ΠΌΠΎΠ³Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ./Π²Π°Ρ ΠΈΠ½ΡΡΠ°Π»Π». ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ ΡΠ΅ / ΡΡΡ / Π»ΠΎΡΠ°Π»Π’Π°ΠΊΠΎ ./Π²Π°Ρ ΠΈΠ½ΡΡΠ°Π»Π» ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ Ρ / ΡΡΡ / Π»ΠΎΡΠ°Π» / Π±ΠΈΠ½, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Ρ ! / Π£ΡΡ / Π»ΠΎΡΠ°Π» / Π»ΠΈΠ± ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π·Π°Π³Π»Π°Π²ΡΠ° Ρ /ΡΡΡ/Π»ΠΎΡΠ°Π»/ΠΈΠ½ΡΠ»ΡΠ΄Π΅. ΠΡΠ°Π²Π° ΡΡΠΏΠ΅ΡΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Ρ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Π° ΡΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΈΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ, ΡΠ°ΠΊΠΎ Π΄Π° Π±ΠΈ ΡΠΈΠΏΠΈΡΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΠΈΠ»Π° ΡΡΠ΄ΠΎ ./Π²Π°Ρ ΠΈΠ½ΡΡΠ°Π»Π». ΠΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅, ΠΠ°Ρ ΡΠ΅ ΠΏΡΠ²ΠΎ ΠΈΠ·Π°Π±ΡΠ°ΡΠΈ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ Π΄Π΅ΡΠ΅Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅, Π° Π·Π°ΡΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ°ΠΆΠΈΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄ΡΠΆ ΠΏΡΡΠ°ΡΠ΅ Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈΡ
Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ. ΠΠ°ΠΊΠ»Π΅, ΠΊΠ°Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌ, Π΄ΠΎΠ±ΡΠ° ΡΠ΅ ΠΏΡΠ°ΠΊΡΠ° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΏΡΠ°Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΌΠΎΠ³Ρ ΠΈΠ·Π°Π±ΡΠ°ΡΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠΈ ΠΎΠΏΡΠΈΡΡ ΡΠΎΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ --prefix
, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ:
./waf configure --prefix=/opt/local
ΠΠΊΠΎ ΠΊΠ°ΡΠ½ΠΈΡΠ΅, Π½Π°ΠΊΠΎΠ½ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ ./waf
, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡ / ΠΎΠΏΡ / Π»ΠΎΡΠ°Π».
Π’ΠΈΠΌ ./waf clean
ΠΌΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΏΡΠ΅ ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ° ΠΏΡΠΎΡΠ΅ΠΊΡΠ° Π°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΠ°Ρ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ.
ΠΠ°ΠΊΠ»Π΅, Π΄Π° Π±ΠΈΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ Π½Ρ-3, Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄Π° ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠ΅ ./waf install
. ΠΠ΅ΡΠΈΠ½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΠ΅Ρ ΠΠ°Ρ ΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΡΡΠ΅Π½ΡΡΠ½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅, Π°Π»ΠΈ Π½Π΅ΠΊΠΈΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΠΌΠ° ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π°ΠΊΠΎ ΡΠΈΡ
ΠΎΠ²Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΊΡΡΡΡΡΡ ΡΠ°Π΄ ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΠΌΠ° ΠΈΠ·Π²Π°Π½ Π½Ρ-3 Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°.
ΠΠ°Ρ ΡΠΈΠ½Π³Π»Π΅
ΠΠ° Π½Π°ΡΠ²ΠΈΡΠ΅ΠΌ Π½ΠΈΠ²ΠΎΡ Π½Ρ-3 ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΡΡΠ°Π±Π»Π° ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½Π° ΠΠ°Ρ ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ°Π΄Π° ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΠ΅ Π΄ΠΎΡΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π° Ρ ΠΈΠΌΠ΅Π½ΠΈΠΊΡ scratch/
ΠΈΠ»ΠΈ Π΄ΡΠ±ΡΠ΅ Ρsrc/...
Π° Ρ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠΎΡΠ°ΡΡ Π΄Π° ΡΡΡΠ΅ ΠΠ°Ρ. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈΡΠ΅ Π³Π΄Π΅ ΡΡΠ΅ ΠΈ Π±Π΅ΠΆΠΈΡΠ΅ ΠΠ°Ρ ΠΊΠ°ΠΊΠΎ ΡΠ»ΠΈΡΠ΅Π΄ΠΈ:
$ ../../../waf ...
Π°Π»ΠΈ ΠΎΠ²ΠΎ ΡΠ΅ Π±ΠΈΡΠΈ Π·Π°ΠΌΠΎΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠΆΠ½ΠΎ Π³ΡΠ΅ΡΠΊΠ°ΠΌΠ°, ΡΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΡΡΠΎΡΠ΅ Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅ΡΠ°. ΠΠ΅Π΄Π°Π½ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΈ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ΅ΡΠΈΠ²Π°ΡΠ° ΡΠ΅ΠΊΡΡΠ° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π΅ΠΌΠ°ΡΡ ΠΈΠ»ΠΈ Π΅Π½Π΅ΡΠ³ΠΈΡΠ°, Ρ ΠΊΠΎΡΠΎΡ ΡΡ ΠΎΡΠ²ΠΎΡΠ΅Π½Π΅ Π΄Π²Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠΊΠ΅ ΡΠ΅ΡΠΈΡΠ΅, ΡΠ΅Π΄Π½Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π½Ρ-3, Π° Π΄ΡΡΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΠΊΠΎΠ΄Π°. ΠΠΊΠΎ ΡΠ°ΠΌΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΡΠ±Π°Π»Π», ΠΎΠ½Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π° ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΌΠΎΡΠΈ:
$ export NS3DIR="$PWD"
$ function waff { cd $NS3DIR && ./waf $* ; }
$ cd scratch
$ waff build
Π£ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠΈΠΌΠ°ΠΌΡΠΈΠ²ΠΎ Π΄ΠΎΠ΄Π°ΡΠΈ ΡΡΠΈΠ²ΠΈΡΠ°Π»Π½Ρ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡΡ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ exec ../../waf
. ΠΠΎΠ»ΠΈΠΌ ΡΠ΅ Π½Π΅ ΡΠ°Π΄ΠΈ ΡΠΎ. ΠΠ²ΠΎ ΡΠ΅ Π·Π±ΡΡΡΡΡΡΠ΅ Π·Π° ΠΏΠΎΡΠ΅ΡΠ½ΠΈΠΊΠ΅ ΠΈ, ΠΊΠ°Π΄Π° ΡΠ΅ ΡΡΠ°Π΄ΠΈ Π»ΠΎΡΠ΅, Π΄ΠΎΠ²ΠΎΠ΄ΠΈ Π΄ΠΎ Π³ΡΠ΅ΡΠ°ΠΊΠ° Ρ ΠΈΠ·Π³ΡΠ°Π΄ΡΠΈ ΠΊΠΎΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠΊΠΎ ΠΎΡΠΊΡΠΈΡΠΈ. ΠΠΎΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½Π° ΡΠ΅ΡΠ΅ΡΠ° ΡΡ ΠΏΡΡ ΠΊΠΎΡΠΈ ΡΡΠ΅Π±Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ.
3.5 Π’Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Ρ-3
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ½Π΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Ρ-3 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡΠ΅ ./ΡΠ΅ΡΡ.ΠΏΠΈ:
$ ./test.py
ΠΠ²ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΡΠ΅ ΠΈΠ·Π²ΠΎΠ΄Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΠ° ΠΠ°Ρ. ΠΠ° ΠΊΡΠ°ΡΡ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΡΡΠΊΡ ΠΊΠΎΡΠ° ΠΊΠ°ΠΆΠ΅:
92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)
ΠΠ²ΠΎ ΡΠ΅ Π²Π°ΠΆΠ½Π° ΠΏΠΎΡΡΠΊΠ° Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ Π²Π°Π»Π³ΡΠΈΠ½Π΄ ΠΊΠ²Π°ΡΠΎΠ²Π°, ΡΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ Π³ΡΠ΅ΡΠ°ΠΊΠ°, ΡΡΠΎ ΡΠΊΠ°Π·ΡΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΡΠ° ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΠΈΠ·ΠΌΠ΅ΡΡ Π°Π»Π°ΡΠ° ΠΈ ΠΊΠΎΠ΄Π°.
Π’Π°ΠΊΠΎΡΠ΅ ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΊΠΎΠ½Π°ΡΠ½ΠΈ ΠΈΠ·Π»Π°Π· ΠΈΠ· ΠΠ°Ρ ΠΈ ΡΠ΅ΡΡΠ΅Ρ ΠΊΠΎΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠ²Π°ΠΊΠΈ ΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
Waf: Entering directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (1.799s)
Modules built:
aodv applications bridge
click config-store core
csma csma-layout dsdv
emu energy flow-monitor
internet lte mesh
mobility mpi netanim
network nix-vector-routing ns3tcp
ns3wifi olsr openflow
point-to-point point-to-point-layout propagation
spectrum stats tap-bridge
template test tools
topology-read uan virtual-net-device
visualizer wifi wimax
PASS: TestSuite ns3-wifi-interference
PASS: TestSuite histogram
...
PASS: TestSuite object
PASS: TestSuite random-number-generators
92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)
ΠΠ²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ Π±ΠΈ Π±ΡΠ·ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ Π΄Π° Π»ΠΈ ΡΠ΅ Π½Ρ-3 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½Π°. (ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ ΡΠ΅Π΄ΠΎΠ²Π° βΠΠ ΠΠΠΠΠ: ...β ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ Π΄ΡΡΠ³Π°ΡΠΈΡΠΈ, ΡΠΎ ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ. ΠΠ½ΠΎ ΡΡΠΎ ΡΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ Π΄Π° ΡΠ΅Π΄ ΡΠ΅Π·ΠΈΠΌΠ΅Π° Π½Π° ΠΊΡΠ°ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ°ΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΡΠ΅ Π΄Π° ΡΡ ΡΠ²ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ»ΠΈ; Π½ΠΈΡΠ΅Π΄Π°Π½ ΡΠ΅ΡΡ Π½ΠΈΡΠ΅ Π½Π΅ΡΡΠΏΠ΅ΡΠ°Π½ ΠΈΠ»ΠΈ ΠΏΠ°ΠΎ.) Π ΠΠ°ΡΠ ΡΠ΅ΡΡ.ΠΏΠΈ ΡΠ΅ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΎΠ²Π°ΡΠΈ ΡΠ°Π΄ ΠΏΡΠ΅ΠΊΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΡΠΊΠΈΡ ΡΠ΅Π·Π³Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π΅.
3.6 ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ΅
ΠΠ±ΠΈΡΠ½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ ΡΠΊΡΠΈΠΏΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΠΌ ΠΠ°Ρ. ΠΠ²ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ³ΡΡΠ° Π΄Π° ΡΡ ΠΏΡΡΠ°ΡΠ΅ Π΄Π΅ΡΠ΅Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Π΅ ΠΈ Π΄Π° ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π΅ Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ·Π²ΠΎΡΠ΅ΡΠ°. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ, ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΠ°Ρ ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -β―-run
. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π½Ρ-3 Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΡΠ²Π΅ΠΏΡΠΈΡΡΡΠ½ΠΎΠ³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Ρ
Π΅Π»Π»ΠΎ ΡΠ²Π΅ΡΡΠΏΠΈΡΠΈΠ²Π°ΡΠ΅ΠΌ ΡΠ»Π΅Π΄Π΅ΡΠ΅Π³:
$ ./waf --run hello-simulator
ΠΠ°Ρ ΡΠ΅ ΠΏΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠΈ Π΄Π° Π»ΠΈ ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ ΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ. ΠΠ½Π΄Π° ΠΠ°Ρ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΠΊΠΎΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΠΈΠ·Π»Π°Π·.
Hello Simulator
Π§Π΅ΡΡΠΈΡΠ°ΠΌ! Π‘Π°Π΄Π° ΡΡΠ΅ Π½Ρ-3 ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ!
Π¨ΡΠ° Π΄Π° ΡΠ°Π΄ΠΈΠΌ Π°ΠΊΠΎ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ΅?
ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΠ°ΡΠΎΠ·Π½Π°ΡΠ°Π²Π°ΡΡΡΠΈ Π΄Π° ΡΠ΅ Π³ΡΠ°Π΄ΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΠ΅Π½Π°, Π°Π»ΠΈ Π½Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π»Π°Π· "ΠΠ΄ΡΠ°Π²ΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ", ΠΎΠ½Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ Π΄Π° ΡΡΠ΅ Ρ ΠΎΠ΄Π΅ΡΠΊΡ [ΠΡΠΈΠ»Π΄-Π²ΠΈΡΡ -ΠΠ°Ρ] ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΈΠ·ΡΠ°Π΄Π΅ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, Π°Π»ΠΈ ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΠΎ ΠΏΠΎΠ²ΡΠ°ΡΠ°ΠΊ Π½Π° ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΠΈ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡ. Π‘Π°Π² ΠΈΠ·Π»Π°Π· ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΠΎΡΠ΅Π±Π½Ρ Π½Ρ-3 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠΎΡΠ° Π²ΡΡΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π·Π° ΡΡΠ°ΠΌΠΏΠ°ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΊΠ° Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ. ΠΠ·Π»Π°Π· ΠΈΠ· ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠ΅Π½ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ° β ΠΎΠ½ ΡΠ΅ βΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½β. ΠΠΊΠΎ Π½Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π»Π°Π· βΠ₯Π΅Π»Π»ΠΎ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡβ, ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
$ ./waf configure --build-profile=debug --enable-examples --enable-tests
ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡΠΈ ΠΠ°Ρ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ° Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Π½Ρ-3 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΠ΅ ΡΠΊΡΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅. ΠΠ°ΡΠΈΠΌ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΠ΅Π½ΡΡΠ½Ρ Π²Π΅ΡΠ·ΠΈΡΡ ΠΊΠΎΠ΄Π° Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΡΠΊΡΡΠ°ΡΠΈ
$ ./waf
Π‘Π°Π΄Π° Π°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Ρ Π΅Π»Π»ΠΎ-ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΡΠ΅ΠΊΠΈΠ²Π°Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ.
3.6.1 ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ Π½Ρ-3, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΠΎΠ±ΡΠ°Π·Π°Ρ:
$ ./waf --run <ns3-program> --command-template="%s <args>"
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠΌ Π²Π°ΡΠ΅Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΠΌΠ°. Π Π°ΡΠΏΡΠ°Π²Π° -β―-command-template
Π·Π° ΠΠ°Ρ ΡΠ΅ Ρ ΡΡΡΡΠΈΠ½ΠΈ ΡΠ΅ΡΠ΅ΠΏΡ Π·Π° ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΡΠ²Π°ΡΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΠ°Ρ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π·Π° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π° Π΄Π° Π»ΠΈ ΡΠ΅ Π³ΡΠ°Π΄ΡΠ° Π·Π°Π²ΡΡΠ΅Π½Π°, ΠΏΠΎΡΡΠ°Π²ΡΠ° ΠΏΡΡΠ°ΡΠ΅ Π΄Π΅ΡΠ΅Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π·Π°ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΡΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΌΠ΅ΡΡΡΠ΅ ΠΈΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΡΡΠ²Π°Ρ ΠΌΠ΅ΡΡΠ° %Ρ Π΄Π° ΠΏΠΎΠ·ΠΎΠ²Π΅ ΠΈΠ·Π²ΡΡΠ½ΠΈ ΡΠ°ΡΠ». ΠΠΊΠΎ ΡΠΌΠ°ΡΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ²Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠ° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½Π°, ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° ΠΊΠΎΡΠ° ΡΠΊΡΡΡΡΡΠ΅ Π½Ρ-3 ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΠΈ ΡΠ΅Π³ΠΎΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½Π΅ Ρ ΡΠ΅Π΄Π½ΠΎΡΡΡΡΠΊΠ΅ Π½Π°Π²ΠΎΠ΄Π½ΠΈΠΊΠ΅:
$ ./waf --run '<ns3-program> --arg1=value1 --arg2=value2 ...'
ΠΠΎΡ ΡΠ΅Π΄Π°Π½ ΠΏΠΎΡΠ΅Π±Π½ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠ½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠΎΡΠΈ ΡΠ΅ Π·ΠΎΠ²Π΅ ΠΌΠΈΡΠ΅ΡΡ (Ρ ΡΡΠ²Π°ΡΠΈ, Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ). ΠΠ·Π½Π°Π΄ ΡΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΡ ./ΡΠ΅ΡΡ.ΠΏΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π²Π΅ΡΠ΅Π³ Π±ΡΠΎΡΠ° ΡΠ΅ΡΡΠΎΠ²Π°, ΠΊΠΎΡΠΈ Π²ΠΈΡΠ΅ ΠΏΡΡΠ° ΠΏΠΎΠ·ΠΈΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡ-ΡΡΠ½Π½Π΅Ρ. Π¦Π°Π»Π» ΡΠ΅ΡΡ-ΡΡΠ½Π½Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ΅Π΄Π°Π½ ΡΠ΅ΡΡ:
$ ./waf --run test-runner --command-template="%s --suite=mytest --verbose"
ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠΎΡΠ»Π΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ ΡΠ΅ΡΡ-ΡΡΠ½Π½Π΅Ρ. ΠΠΎΡΡΠΎ ΠΌΠΈΡΠ΅ΡΡ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ, Π±ΠΈΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π° ΠΏΠΎΡΡΠΊΠ° ΠΎ Π³ΡΠ΅ΡΡΠΈ. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΎΠ΄ΡΡΠ°ΠΌΠΏΠ°Π»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π΅ ΠΎΠΏΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π½ΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ°, ΡΠ½Π΅ΡΠΈΡΠ΅:
$ ./waf --run test-runner --command-template="%s --help"
3.6.2 ΠΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ Π½Ρ-3 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ»ΡΠΆΠ½ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΎΠΌ, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π΄Π΅Π±Π°Π³Π΅Ρ (Π½ΠΏΡ. Π³Π΄Π±) ΠΈΠ»ΠΈ Π°Π»Π°Ρ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ (Π½ΠΏΡ. Π²Π°Π»Π³ΡΠΈΠ½Π΄), ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ»ΠΈΡΠ°Π½ ΠΎΠ±Π»ΠΈΠΊ -β―-command-template = "β¦"
. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Π³Π΄Π± Π²Π°Ρ Ρ
Π΅Π»Π»ΠΎ-ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Ρ-3 ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΠΌΠ°:
$ ./waf --run=hello-simulator --command-template="gdb %s --args <args>"
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΈΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π½Ρ-3 Π΄ΠΎΠ»Π°Π·ΠΈ ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ -β―-run
, ΠΈ ΡΡΠ»ΡΠΆΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ (ΠΎΠ²Π΄Π΅ Π³Π΄Π±) ΡΠ΅ ΠΏΡΠ²Π° Π»Π΅ΠΊΡΠ΅ΠΌΠ° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ -β―-command-template
. ΠΠΏΡΠΈΡΠ° -β―-args
ΠΈΠ·Π²Π΅ΡΡΠ°ΡΠΈ Π³Π΄Π±Π΄Π° ΠΎΡΡΠ°ΡΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΏΡΠΈΠΏΠ°Π΄Π° βΠ½ΠΈΠΆΠ΅ΠΌβ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ. (ΠΠ΅ΠΊΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ Π³Π΄Π± Π½Π΅ ΡΠ°Π·ΡΠΌΠ΅ΠΌ ΠΎΠΏΡΠΈΡΡ -β―-args
. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΡΠΊΠ»ΠΎΠ½ΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΈΠ· -β―-command-template
ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΊΡΠΏ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π³Π΄Π± Π°ΡΠ³Ρ.) ΠΠΎΠΆΠ΅ΠΌΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠΈ ΠΎΠ²Π°Ρ ΡΠ΅ΡΠ΅ΠΏΡ ΠΈ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΈ Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΏΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΎΠΌ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°:
$ ./waf --run test-runner --command-template="gdb %s --args --suite=mytest --verbose"
3.6.3 Π Π°Π΄Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΈΠΊ
ΠΠ°Ρ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΡΠ΅ Π»Π°Π½ΡΠΈΡΠ° ΡΠ° ΡΠ²ΠΎΡΠ΅ Π»ΠΎΠΊΠ°ΡΠΈΡΠ΅ Π½Π° Π²ΡΡ
Ρ Π½Ρ-3 ΡΡΠ°Π±Π»Π°. ΠΠ²Π° ΡΠ°ΡΡΠΈΠΊΠ»Π° ΠΏΠΎΡΡΠ°ΡΠ΅ ΡΠ°Π΄Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Ρ ΠΊΠΎΡΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΡΠΏΠΈΡΠ°Π½Π΅ ΠΈΠ·Π»Π°Π·Π½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅. ΠΠ»ΠΈ ΡΡΠ° Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π·Π°Π΄ΡΠΆΠΈΡΠ΅ ΠΈΠ·Π²Π°Π½ Π½Ρ-3 ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΡΡΠ°Π±Π»Π°? ΠΠΎΡΠΈΡΡΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ -β―-cwd
:
$ ./waf --cwd=...
ΠΠΎΠΆΠ΄Π° ΡΠ΅ Π²Π°ΠΌ Π±ΠΈΡΠΈ Π·Π³ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ ΠΈΠ·Π»Π°Π·Π½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ ΡΠ²ΠΎΠΌ ΡΠ°Π΄Π½ΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½Π΅ Π°ΠΊΡΠΈΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΌΠΎΡΠΈ:
$ function waff {
CWD="$PWD"
cd $NS3DIR >/dev/null
./waf --cwd="$CWD" $*
cd - >/dev/null
}
ΠΠ²Π° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΈΡΠ° ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΡΠ²Π° ΡΡΠ΅Π½ΡΡΠ½ΠΈ ΡΠ°Π΄Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ, ΠΈΠ΄Π΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΠ°ΡΠ° Π·Π°ΡΠΈΠΌ ΡΠΏΡΡΡΡΠ΅ ΠΠ°Ρ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°Π΄Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π½Π°Π·Π°Π΄ Ρ ΡΡΠ΅Π½ΡΡΠ½ΠΈ ΡΠ°Π΄Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ°ΡΡΠ²Π°Π½ ΠΏΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠΎΠΌΠΈΡΠ΅ΠΌΠΎ Π΅ΠΊΠΈΠΏΡ -β―-cwd
Π Π°Π΄ΠΈ ΠΏΠΎΡΠΏΡΠ½ΠΎΡΡΠΈ, Π²Π΅ΡΠΈΠ½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΠ°Ρ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π½Π°ΡΠ²ΠΈΡΠ΅Π³ Π½ΠΈΠ²ΠΎΠ° ΠΈ ΡΠ°ΠΌΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ΅ ΠΈΠ·Π»Π°Π·Π½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ