рдПрдирдПрд╕-3 рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ред рдЕрдзреНрдпрд╛рдп 3

рдПрдирдПрд╕-3 рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ред рдЕрдзреНрдпрд╛рдп 3
рдЕрдзреНрдпрд╛рдп 1,2

3 рдЖрд░рдВрдн рдХрд░рдирд╛
3.1 рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
3.2 рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ
3.2.1 рдПрдирдПрд╕-3 рд░рд┐рд▓реАрдЬ рдХреЛ рд╕реНрд░реЛрдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛
3.3 Git рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ns-3 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛
3.3.1 рдмреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирдПрд╕-3 рд▓реЛрдб рдХрд░рдирд╛
3.4 рдЕрд╕реЗрдВрдмрд▓реА рдПрдирдПрд╕-3
3.4.1 build.py рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдбрд┐рдВрдЧ
3.4.2 рдмреЗрдХ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдбрд┐рдВрдЧ
3.4.3 рд╡рдлрд╝ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ
3.5 рдкрд░реАрдХреНрд╖рдг рдПрдирдПрд╕-3
3.6 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛
3.6.1 рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ
3.6.2 рдбрд┐рдмрдЧрд┐рдВрдЧ
3.6.3 рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛

рдЕрдзреНрдпрд╛рдп 3

рд╢реБрд░реВ рдХрд░рдирд╛

рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд╛рдардХ рдХреЛ рдРрд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдХрднреА рднреА рдПрдирдПрд╕-3 рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛред рдЗрд╕рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ, рдПрдирдПрд╕-3 рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдПрдирдПрд╕-3 рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдФрд░ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ, рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

3.1 рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рдПрдирдПрд╕-3 рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛ рд╕рд╣рдпреЛрдЧреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рдпреВрдЬрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХреЛрдб рдХреЛ рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП C++ рдпрд╛ Python рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдирдПрд╕-3 рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкрд╣рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, ns-3 рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдЬрдХрд▓ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдирд╛ рдХрд╛рдо ns-3 рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдХреЛрдИ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдПрдирдПрд╕-рдбреЗрд╡рд▓рдкрд░реНрд╕.

рдЖрдЧреЗ, рд╣рдо ns-3 рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдмрдирд╛рдирд╛ рд╣реИред рджреВрд╕рд░рд╛ рдореВрд▓ рдПрдирдПрд╕-3 рд╕рдВрд╕реНрдерд╛рдкрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдФрд░ рд╕рдВрдпреЛрдЬрди рд╣реИред рддреАрд╕рд░рд╛ рдПрдирдПрд╕-3 рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рд▓реНрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдХрд░рдг рдереЛрдбрд╝реЗ рднрд┐рдиреНрди рд╣реИрдВред

рдЕрдиреБрднрд╡реА рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддрд░рд╣ рдПрдирдПрд╕ -3 рдХреЛ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдмрд┐рдпрди) рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдПрдирдПрд╕ -3 рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдо рд╕реНрд░реЛрдд рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдирдПрд╕-3 рдЕрдзрд┐рдХрд╛рд░ рдЬрдбрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдПрдХ рдЕрд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред

3.2 рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ

рдЙрдкрд▓рдмреНрдз ns-3 рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП ns-3 рдХреЛ рдХрдИ рд╕рд╛рдорд╛рдиреНрдп (рдЕрдХреНрд╕рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд) рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ C++ рдХрдВрдкрд╛рдЗрд▓рд░, рдкрд╛рдпрдерди, рдПрдХ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрдкрд╛рджрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рдХреНрддрд┐, Emacs рдпрд╛ рдЧреНрд░рд╣рдг) рдФрд░, рдпрджрд┐ рд╡рд┐рдХрд╛рд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Git рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реАред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдЙрдирдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдПрдирдПрд╕ -3 рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЧрд╛рдпрдм рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рд▓реЛрдЧ рдкреВрд░реНрдг рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рд╡рд┐рдХреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕ рд╡рд╛рд▓реЗ рдкреЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдРрд╕рд╛ рд╣реА рдПрдХ рдкреЗрдЬ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдкреЗрдЬ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: https://www.nsnam.org/wiki/Installation.

рдЗрд╕ рд╡рд┐рдХрд┐ рдХрд╛ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛ рдЕрдиреБрднрд╛рдЧ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдПрдирдПрд╕-3 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдирдХреНрд╕ рдпрд╛ рдореИрдХрдУрдПрд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдлреНрд▓реЗрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдПрдирдПрд╕-3 рд╡рд┐рдХреА рдкреЗрдЬ рдпрд╛ рдореБрдЦреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ: https://www.nsnam.org, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдПрдирдПрд╕-3 (рдПрдирдПрд╕-3.29) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ, рдПрдирдПрд╕-3 рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

рдЯреВрд▓ рдкреИрдХреЗрдЬ/рд╕рдВрд╕реНрдХрд░рдг

  • рд╕реА++ рдХрдВрдкрд╛рдЗрд▓рд░
    рдХреНрд▓реИрдВрдЧ++ рдпрд╛ рдЬреА++ (рдЬреА++ рд╕рдВрд╕реНрдХрд░рдг 4.9 рдпрд╛ рдЙрдЪреНрдЪрддрд░)
  • рдЕрдЬрдЧрд░
    Python2 рд╕рдВрд╕реНрдХрд░рдг >= 2.7.10, рдпрд╛ Python3 рд╕рдВрд╕реНрдХрд░рдг >=3.4
  • рдЬрд╛рдирд╛
    рдХреЛрдИ рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (GitLab.com рдкрд░ ns-3 рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП)
  • рдЯрд╛рд░
    рдХреЛрдИ рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (рдПрдирдПрд╕тАС3 рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)
  • рдмрдВрдЬрд╝рд┐рдк2
    рдХреЛрдИ рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (nsтАС3 рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)

рдкрд╛рдпрдерди рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдХрд░реЗрдВ python -V. g++ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХрд░реЗрдВ g++ -v. рдпрджрд┐ рдХреЛрдИ рдЙрдкрдХрд░рдг рдЧрд╛рдпрдм рд╣реИ рдпрд╛ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдирдПрд╕-3 рд╡рд┐рдХреА рдкреЗрдЬ рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред

рдЕрдм рд╕реЗ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░реАрдбрд░ рд▓рд┐рдирдХреНрд╕, рдореИрдХрдУрдПрд╕, рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдПрдореБрд▓реЗрдЯрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдХрд░рдг рд╣реИрдВред

3.2.1 рдПрдирдПрд╕-3 рд░рд┐рд▓реАрдЬ рдХреЛ рд╕реНрд░реЛрдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛

рдпрд╣ рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдПрдирдПрд╕-3 рдХреЗ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдФрд░ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдПрдирдПрд╕-3 рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╕реНрд░реЛрдд рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЯрд╛рд░рдмреЙрд▓. рдЯрд╛рд░рдмреЙрд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрддреА рд╣реИрдВред рд╕рдВрдЧреНрд░рд╣ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛрддрд╛ рд╣реИ. ns-3 рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд╛рд░рдмреЙрд▓ рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдирд╛рдордХ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ ns-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 

рдКрдкрд░ рдкреНрд░рдпреБрдХреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ wget, рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╕реЗ рдЖрдк ns-allinone-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 Git рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ns-3 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛

ns-3 рдХреЛрдб GitLab.com рдкрд░ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ https://gitlab.com/nsnam/. рд╕рдореВрд╣ nsnam рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рддрд╛ рд╣реИред

Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдлреЛрд░реНрдХ рдпрд╛ рдХреНрд▓реЛрди рдХрд░рдирд╛ рд╣реИ рдПрдирдПрд╕-3-рдПрд▓рд┐рдиреЛрди. рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдирдПрд╕-3 рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреА рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк Git рдореЗрдВ рдирдП рд╣реИрдВ, рддреЛ "рдХрд╛рдВрдЯрд╛" рдФрд░ "рдХреНрд▓реЛрди" рд╢рдмреНрдж рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк GitLab.com рдкрд░ рд╕реНрдерд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреНрд▓реЛрди рдХрд░реЗрдВ (рдЕрдкрдиреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдВ):

$ 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

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдбрд╛рдЙрдирд▓реЛрдб.py, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ ns-3 рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд┐рдХрд╛рд▓реЗрдЧрд╛ред рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдпрд╛ рддреЛ рдирд╡реАрдирддрдо рдПрдирдПрд╕-3 рд╡рд┐рдХрд╛рд╕ рд╕реНрдиреИрдкрд╢реЙрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

$ python download.py

рдпрд╛ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ns-3 рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ -n рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрдЦреНрдпрд╛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

$ python download.py -n ns-3.29

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрджрдо рдХреЗ рдмрд╛рдж рдПрдирдПрд╕-3-рдПрд▓рд┐рдиреЛрди рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рдПрдВрдЧреА рдПрдирдПрд╕ -3, рд╕реЗрдВрдХрдирд╛, pybindgen ╨╕ рдиреЗрддрдирд┐рдо.

рдиреЛрдЯ
рд╕реНрд╡рдЪреНрдЫ Ubuntu16.04 рд╡рд╛рд▓реА рдорд╢реАрди рдкрд░, рдореБрдЭреЗ рдХрдорд╛рдВрдб рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА: $ sudo python3 download.py -n ns-3.29 (рдЗрд╕рдХреЗ рдмрд╛рдж рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рдиреЛрдЯреНрд╕)ред

3.3.1 рдмреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирдПрд╕-3 рд▓реЛрдб рдХрд░рдирд╛

рдЙрдкрд░реЛрдХреНрдд рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ (рд╕реНрд░реЛрдд рд╕рдВрдЧреНрд░рд╣ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдирдПрд╕-3-рдПрд▓рд┐рдиреЛрди Git рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдПрдХрд╛рдзрд┐рдХ рдРрдбрдСрди рдХреЗ рд╕рд╛рде рд╕рд░рд▓рддрдо ns-3 рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ(pybindgen рдкрд╛рдпрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдиреЗрддрдирд┐рдо рдиреЗрдЯрд╡рд░реНрдХ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП)ред ns-3-allinone рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рддреАрд╕рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕реЗрдВрдХрдирд╛.

рд╕реЗрдВрдХрдирд╛ рдПрдирдПрд╕-3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрдИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рдордиреНрд╡рд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╕реЗрдВрдХрдирд╛ рдПрдирдПрд╕-3 рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкрд░реНрдпрд╛рд╡рд░рдг рдЬреИрд╕реЗ рдПрдирдПрд╕-3 рд╡рд┐рддрд░рдг рдХреЗ рдЖрдзрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпрдХреНрд╖ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди, рдХреНрд░реИрдбрд▓рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреНрд░реИрдбрд▓, рдирдИ рдкрд╛рдпрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рд╡рд┐рднрд┐рдиреНрди ns-3 "рдРрдкреНрд╕" рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рдиреЛрдЯ
рдХреНрд░реИрдбрд▓рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреНрд░реИрдбрд▓ рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреАрд╕реАрдкреА/рдЖрдИрдкреА рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ ns-3 рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдореЗрдВ рдЙрдиреНрдирдд рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реЛрдВрдЧреА, рддреЛ рдЖрдк рдЗрд╕ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд╡реАрдирддрдо рдПрдирдПрд╕-3 рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╕реЗрдВрдХрдирд╛ рдЯрд╛рд░ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рдордп рд╡рд░реНрддрдорд╛рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рд╕реЗрдВрдХрдирд╛, рдЬрд┐рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ ns-3.29 рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд╛ рдЙрдкрдпреЛрдЧ ns-3 рдпрд╛ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдкреИрдХреЗрдЬ рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдмреЗрдХрдХреЙрдиреНрдл.xml рдЕрджреНрдпрддрди рдирд╣реАрдВ рд╣реБрдЖ)ред

рдЖрдк рдирд╡реАрдирддрдо рдкреНрд░рддрд┐ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕реЗрдВрдХрдирд╛рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдХреЗ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Git рд╕реНрдерд╛рдкрд┐рдд рд╣реИ):

$ cd 
$ mkdir workspace 
$ cd workspace 
$ git clone https://gitlab.com/nsnam/bake.git

рдЬрдм рдЖрдк 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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдХрдИ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд▓реЛрдб рдХреА рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рд╣реИ рд╕реЗрдВрдХрдирд╛ рдФрд░ рдПрдХ XML рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓. рдЕрдЧрд▓рд╛ рдХрджрдо рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдПрдирдПрд╕-3 рд╡рд┐рддрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдХрдИ рдЕрдиреБрдХреВрд▓рди рд▓рдХреНрд╖реНрдп рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:

  1. рдПрдирдПрд╕ -3.29: рд░рд┐рд▓реАрдЬ рдХреЗ рдЕрдиреБрд░реВрдк рдореЙрдбреНрдпреВрд▓; рдпрд╣ рдЯрд╛рд░рдмреЙрд▓ рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рдорд╛рди рдШрдЯрдХреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛;

  2. рдПрдирдПрд╕-3-рджреЗрд╡: рдПрдХ рд╕рдорд╛рди рдореЙрдбреНрдпреВрд▓, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рд╡реГрдХреНрд╖ рд╕реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;

  3. рдПрдирдПрд╕-рдПрд▓рд┐рдиреЛрди-3.29: рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд┐рдХ рд░реВрдЯрд┐рдВрдЧ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреНрд░реИрдбрд▓, рдПрдирдПрд╕-3 рдХреЗ рд▓рд┐рдП рдУрдкрдирдлреНрд▓реЛ рдЬреИрд╕реА рдЕрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

  4. рдПрдирдПрд╕-3-рдПрд▓рд┐рдиреЛрди: рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди рдСрд▓ - рдЗрди - рд╡рди, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдПред

рдиреЛрдЯ
рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рд░рд╛рдЙрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ред

рдУрдкрдирдлреНрд▓реЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд░рд╛рдЙрдЯрд░ рдФрд░ рд╕реНрд╡рд┐рдЪ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИред

рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд╛рд╕ рд╕реНрдиреИрдкрд╢реЙрдЯ (рдЧреИрд░-рд░рд┐рд▓реАрдЬрд╝) ns-3 рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:https://gitlab.com/nsnam/ns-3-dev.git.

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рд░реНрдп рдХреНрд░рдо рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд┐рдХрд╛рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕реВрдЪреА рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдХреЗ, рдпрд╛ ns-3 рд░рд┐рд▓реАрдЬрд╝ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдЬрд╛рдХрд░ рдХреЛрдб рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:https://www.nsnam.org/releases/ рдФрд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо ns-3.29 рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдЕрдм, рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ ns-3 рдШрдЯрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рд╕реЗрдВрдХрдирд╛. рдЖрдЗрдП рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╢рдмреНрдж рдХрд╣реЗрдВ рд╕реЗрдВрдХрдирд╛.

рдмреЗрдХ рдкреИрдХреЗрдЬ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓реЛрдб рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕реНрд░реЛрдд рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЛ рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рд╕реЗрдВрдХрдирд╛ рдмрд╛рдЗрдирд░реА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╕реЗрдВрдХрдирд╛ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдирд╣реАрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдореЗрдВ рдкрде рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рд╕реЗрдВрдХрдирд╛ рдЖрдкрдХреЗ рдкрде (PATH рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░) рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ (рд▓рд┐рдирдХреНрд╕ рдмреИрд╢ рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг)ред "рдмреЗрдХ" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:

$ export BAKE_HOME=`pwd` 
$ export PATH=$PATH:$BAKE_HOME:$BAKE_HOME/build/bin 
$ export PYTHONPATH=$PYTHONPATH:$BAKE_HOME:$BAKE_HOME/build/lib

рдЗрд╕рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдмреЗрдХ.рдкреА.рдИ рд╢реЗрд▓ рдкрде рдкрд░ рдФрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЛ рдвреВрдВрдврдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рд╕реЗрдВрдХрдирд╛. рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗрдВрдХрдирд╛, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд PATH рдФрд░ PythonPATH рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди ns-3-allinone (рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде) рдХреЗ рдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЕрдкрдиреА рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░реЗрдВ:

$ ./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

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рддреАрди рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред рдЕрдм рд╕реЛрд░реНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ ls рдЯрд╛рдЗрдк рдХрд░реЗрдВ; рддреБрдореНрд╣реЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

$ cd source 
$ ls
netanim-3.108 ns-3.29 pybindgen

рдЕрдм рдЖрдк ns-3 рд╡рд┐рддрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

3.4 рдЕрд╕реЗрдВрдмрд▓реА рдПрдирдПрд╕-3

рдПрдирдПрд╕-3 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рддрд░рд╣, рдПрдирдПрд╕-3 рдмрдирд╛рдиреЗ рдХреЗ рднреА рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ ns-3 рдирд╛рдордХ рдмрд┐рд▓реНрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ wafрдиреАрдЪреЗ рд╡рд░реНрдгрд┐рддред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ waf, рд▓реЗрдХрд┐рди рдЖрд░рдВрдн рдХрд░рдиреЗ рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрд┐рд▓реНрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВред рддреЛ рдХреГрдкрдпрд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ waf, рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдмрд┐рд▓реНрдб.py рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рд╛рде рд╕реЗрдВрдХрдирд╛.

3.4.1 build.py рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдбрд┐рдВрдЧ

рдЪреЗрддрд╛рд╡рдиреА! рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдХреЗрд╡рд▓ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╕реНрд░реЛрдд рд╕рдВрдЧреНрд░рд╣ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ; рдФрд░ рдЧрд┐рдЯ рдпрд╛ рдмреЗрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЯрд╛рд░рдмреЙрд▓рдореЗрдВ рдПрдирдПрд╕-3-рдПрд▓рд┐рдиреЛрди рдПрдХ рдЖрд╕рд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕реЗ build.py рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕реЗрдЯрдЕрдк рдФрд░ ns-3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ ns-3 рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо, Waf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ рдЯрд╛рд░рдмреЙрд▓, рдлрд┐рд░ рдЖрдкрдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ ~/рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдПрдирдПрд╕-рдПрд▓рд┐рдиреЛрди-3.29. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░реЗрдВ:

$ ./build.py --enable-examples --enable-tests

рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдмрд┐рд▓реНрдб.py рд╣рдордиреЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдПрдирдПрд╕-3 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рднреА рдЙрдкрд▓рдмреНрдз рдореЙрдбреНрдпреВрд▓ рднреА рдмрдирд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдирдПрд╕-3 рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдирд┐рдореЗрдЯрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧреА рдиреЗрддрдирд┐рдо, рдлрд┐рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬрдирд░реЗрдЯрд░ pybindgen рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдирдПрд╕-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

рдорджрдж: рдЖрдк "bake.py Deploy" рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдмрд┐рд▓реНрдб рджреЛрдиреЛрдВ рдЪрд░рдг рдПрдХ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА рдШрдЯрдХреЛрдВ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдЕрд╕реЗрдВрдмрд▓реА рдЬрд╛рд░реА рд░рд╣реЗрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╕рдорд╕реНрдпрд╛ рдереА рдХрд╛рд╕реНрдЯxml рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реЗрдВрдмрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕реЗрдВрдХрдирд╛ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдирд╣реАрдВ. рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

>> 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.

рд▓реЗрдХрд┐рди рдХрд╛рд╕реНрдЯxml рдХреЗрд╡рд▓ рддрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрдм рдЖрдк рдЕрджреНрдпрддрди рдкрд╛рдпрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЬрдм рддрдХ рд╡реЗ ns-3 рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдРрд╕реА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрднреА рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЖрдкрдХреЛ рд▓рд╛рдкрддрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛:

$ ./bake.py show

рдЖрдк рдЬрд┐рди рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрдирдХреА рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реВрдЪреАрдмрджреНрдз рдХреА рдЬрд╛рдПрдВрдЧреАред

3.4.3 рд╡рдлрд╝ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ, рдПрдирдПрд╕-3 рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдпрд╛ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдмрд┐рд▓реНрдб.py, рдпрд╛ рдЙрдкрдХрд░рдг рд╕реЗрдВрдХрдирд╛. рдпреЗ рдЙрдкрдХрд░рдг рдПрдирдПрд╕-3 рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╡реЗ рдмрд┐рд▓реНрдб рдЯреВрд▓ рдЪрд▓рд╛рддреЗ рд╣реИрдВ waf рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдПрдирдПрд╕-3 рд╕реЗред waf ns-3 рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ nsтАС3 рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХреА рдУрд░ рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВ waf. рдЗрд╕рд▓рд┐рдП, рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЙрд╕ ns-3 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛ред

рдЗрд╕ рд╕рдордп рдЗрд╕рдХреА рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рдЬрд╛рдХрд░ рджреЗрдЦрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреИрд╕реЗ рдХрд░реЗрдВред рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ рдХреЛрдб рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдирд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрдкрдиреЗ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рд╡рдлрд╝ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

$ ./waf clean 
$ ./waf configure --build-profile=optimized --enable-examples --enable-tests

рдпрд╣ рд▓реЙрдиреНрдЪ рд╣реЛрдЧрд╛ waf рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ (рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП)ред рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдкрд┐рдЫрд▓реЗ рдмрд┐рд▓реНрдб рд╕реЗ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ (рдиреАрдЪреЗ рдмрд┐рд▓реНрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рднреА рджреЗрдЦреЗрдВ); рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ рдирд┐рд░реНрдорд╛рдг /. рдЬрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдХреЗ рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

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)

рдХреГрдкрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рд╕реВрдЪреА рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдХреБрдЫ ns-3 рд╡рд┐рдХрд▓реНрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, XmlTo рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдореМрдЬреВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП libxml-2.0. рдпрджрд┐ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ рдорд┐рд▓реА рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд ns-3 рдлрд╝рдВрдХреНрд╢рди рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ sudo рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдЗрдб рдмрд┐рдЯ "рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕рдореВрд╣ рдЖрдИрдбреА рд╕реЗрдЯ рдХрд░реЗрдВ" рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ "рд╕рдХреНрд╖рдо рдирд╣реАрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╕рдХреНрд╖рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ waf рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде --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

рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рджреГрд╢реНрдп рдмрд┐рд▓реНрдб.py рддрд░реНрдХреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ --enable-examples ╨╕ --enable-tests, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк waf рдпрд╣ рд╕реАрдзреЗ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:

$ ./build.py --disable-python

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:

build.py: error: no such option: --disable-python

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░ - - рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ WAFрдЗрд╕рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдХреЗ рдмрдЬрд╛рдп рдирд┐рдореНрди рдЖрджреЗрд╢ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

$ ./build.py -- --disable-python

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЦреНрдп рдХрдорд╛рдВрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ ./waf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ --рдЕрдХреНрд╖рдо-рдкрд╛рдпрдерди. рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдЧрдП рд╣реИрдВ waf.

рдирд┐рд░реНрдорд╛рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛

ns-3 рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдорд╛рдиреНрдп Linux рдФрд░ MacOS рд╡рд┐рддрд░рдг рдкрд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рдордп рдЙрдкрд▓рдмреНрдз рдирд╡реАрдирддрдо C++ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдордп рдХреЗ рд╕рд╛рде, рдирдП рд╡рд┐рддрд░рдг рдирдП рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпреЗ рдирдП рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд╛рдВрдбрд┐рддреНрдпрдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реИрдВред рдПрдирдПрд╕-3 рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмрд┐рд▓реНрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрднреА-рдХрднреА рдпрджрд┐ рдЖрдк рдПрдХ рдирдП рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдиреА рдмрд┐рд▓реНрдб рдХреЛ рд░реЛрдХ рд╕рдХрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ Fedora 3.28 рдХреЗ рд▓рд┐рдП nsтАС28 рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИ рдереА, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рдерд╛ рдЬреАрд╕реАрд╕реА (рдЬреАрд╕реАрд╕реА-8). Gtk3.28+ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░ Fedora 28 рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд░рд┐рд▓реАрдЬрд╝ ns-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 рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ g++ рдФрд░ clang++ рдореЗрдВ "-Werror" рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рдирд╛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ "--disable-werror" рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

$ ./waf configure --disable-werror --enable-examples --enable-tests

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдпрд╛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ

рдХреБрдЫ рдЖрджреЗрд╢ waf рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдореЗрдВ рд╣реА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдореЗрдВ рд╣реА рдорд╛рдиреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк ns-3 рдЗрдореНрдпреВрд▓реЗрд╢рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд┐рдЯ рд╕реЗрдЯрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ SUID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП sudo, рдЬреИрд╕рд╛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдХрдорд╛рдВрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрдЧрд╛, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

$ ./waf configure --enable-sudo --enable-examples --enable-tests

рдЕрдЧрд░ рдЖрдк рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ waf рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ sudoрдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдореНрдпреВрд▓реЗрд╢рди рдХреЛрдб рд╕реЙрдХреЗрдЯ рдирд┐рд░реНрдорд╛рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдбрд╝. рдореЗрдВ waf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЕрдкрдиреЗ рд╡рд┐рдХрд▓реНрдк рддрд▓рд╛рд╢рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд░реНрдЬ рдХрд░реЗрдВ:

$ ./waf --help

рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╕рдВрдмрдВрдзреА рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓

рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ waf рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ ╨╕ рдЕрдиреБрдХреВрд▓рд┐рдд:

$ ./waf --build-profile=debug

рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рднреА рд╣реИ, рдФрд░ . рд╡рд┐рдХрд▓реНрдк -d рдХрд╛ рдкрд░реНрдпрд╛рдп рд╣реИ --build-profile. рдмрд┐рд▓реНрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд▓реЙрдЧрд┐рдВрдЧ, рдЕрднрд┐рдХрдерди рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреБрдХреВрд▓рди рд╕реНрд╡рд┐рдЪ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ:

рдПрдирдПрд╕-3 рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ред рдЕрдзреНрдпрд╛рдп 3

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рджрд╛рд╡реЗ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрднреНрдпрд╛рд╕ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рд░рди (рдЖрдВрдХрдбрд╝реЛрдВ рдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП) рдХрд░рдирд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд┐рд▓реНрдб рдкреНрд░реЛрдлрд╛рдЗрд▓ рдореЗрдВ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреЛрдб рд░реИрдкрд░ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

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;)

рдЧрд▓рддреА рдХрд░рдирд╛, waf рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдЖрдк рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -тАп-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
...

рдЬреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдирд╡реАрдирддрдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдХрдИ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, waf рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдХреЗрд╡рд▓ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ред

рдЬрдм рдЖрдк рдмрд┐рд▓реНрдб рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдЗрд╕ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рджреЗрдиреЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА:

$ 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

рд╕рдВрдХрд▓рдХ рдФрд░ рдЭрдВрдбреЗ

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ waf ns-3 рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП GCC рд╕реЗ C++ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ( рдЬреА ++). рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ waf C++ рдХрдВрдкрд╛рдЗрд▓рд░, CXX рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C++ рдХрдВрдкрд╛рдЗрд▓рд░ Clang, clang++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,

$ CXX="clang++" ./waf configure 
$ ./waf build 

рдЗрд╕реА рддрд░рд╣ рдЖрдк рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ waf рд╡рд┐рддрд░рд┐рдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХреБрд▓ рдХрд░рдирд╛:

$ CXX="distcc g++" ./waf configure 
$ ./waf build

Distcc рдФрд░ рд╡рд┐рддрд░рд┐рдд рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреГрд╖реНрда рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред ns-3 рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп рдХрдВрдкрд╛рдЗрд▓рд░ рдлрд╝реНрд▓реИрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, CXXFLAGS_EXTRA рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕реНрдерд╛рдкрдирд╛

waf рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рдВрдХрд▓рд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдирд┐рд░реНрдорд╛рдг, рдФрд░ рдЪреВрдБрдХрд┐ Waf рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдпреЛрдВ рдХрд╛ рд╕реНрдерд╛рди рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХрд╣реАрдВ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ ./waf рдЗрдВрд╕реНрдЯреЙрд▓. рд╕рдВрд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрд╕рд░реНрдЧ рд╣реИ / Usr / рд╕реНрдерд╛рдиреАрдпрдЗрд╕рд▓рд┐рдП, ./waf рдЗрдВрд╕реНрдЯреЙрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдЧрд╛ / Usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ / Usr / рд╕реНрдерд╛рдиреАрдп / lib рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ /usr/рд╕реНрдерд╛рдиреАрдп/рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ. рд╕реБрдкрд░рдпреВрдЬрд╝рд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд╣реЛрдЧрд╛ sudo ./waf рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ. рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░, рд╡рдлрд╝ рдкрд╣рд▓реЗ рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдиреЗрдЧрд╛, рдлрд┐рд░ рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рдкрде рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдХрд┐ рд╕рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдХрд▓реНрдк рдкрд╛рд╕ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ --prefix, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

./waf configure --prefix=/opt/local

рдпрджрд┐ рдмрд╛рдж рдореЗрдВ, рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ ./waf, рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ /рдСрдкреНрдЯ/рд╕реНрдерд╛рдиреАрдп.

рдЯреАрдо ./waf clean рдпрджрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП waf рдПрдХ рдЕрд▓рдЧ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рддрд╣рдд.

рдЗрд╕ рдкреНрд░рдХрд╛рд░, ns-3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ./waf install. рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ waf рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЙрдард╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЙрдирдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ ns-3 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╡рдлрд╝ рд╕рд┐рдВрдЧрд▓

рдПрдирдПрд╕-3 рд╕реНрд░реЛрдд рд╡реГрдХреНрд╖ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░, рдХреЗрд╡рд▓ рдПрдХ рд╡рдлрд╝ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ, рддреЛ рдЖрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдПрдВрдЧреЗ scratch/ рдпрд╛ рдЧрд╣рд░рд╛рдИ рдореЗрдВsrc/... рдФрд░ рд╕рд╛рде рд╣реА рднрд╛рдЧрдирд╛ рднреА рдкрдбрд╝рддрд╛ рд╣реИ waf. рдЖрдк рдмрд╕ рдпрд╣ рдпрд╛рдж рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рд╣реИрдВ рдФрд░ рджреМрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ waf рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

$ ../../../waf ...

рд▓реЗрдХрд┐рди рдпрд╣ рдердХрд╛рдК рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рдг рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдореМрдЬреВрдж рд╣реИрдВред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ Emacs рдпрд╛ рд╢рдХреНрддрд┐, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕рддреНрд░ рдЦреЛрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ ns-3 рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╣реИ рдЯрд╛рд░рдмреЙрд▓, рддреЛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

$ export NS3DIR="$PWD" 
$ function waff { cd $NS3DIR && ./waf $* ; } 

$ cd scratch 
$ waff build

рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╡реЗрдл рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдирд╛ рдЖрдХрд░реНрд╖рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ exec ../../waf. рдХреГрдкрдпрд╛ рд╡реИрд╕рд╛ рдордд рдХрд░реЛред рдпрд╣ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░, рдЬрдм рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрдорд╛рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рд╡рд╣ рдкрде рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

3.5 рдкрд░реАрдХреНрд╖рдг рдПрдирдПрд╕-3

рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ ns-3 рд╡рд┐рддрд░рдг рдХреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ ./test.py:

$ ./test.py

рдпреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдирд╛рдВрддрд░ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВ waf. рдЖрдЦрд╝рд┐рд░рдХрд╛рд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реЛ:

92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)

рдпрд╣ рд╡реЗрд▓рдЧреНрд░рд┐рдВрдб рдХреНрд░реИрд╢, рдХреНрд░реИрд╢ рдпрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрджреЗрд╢ рд╣реИ, рдЬреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдпрд╛ рдЯреВрд▓ рдФрд░ рдХреЛрдб рдХреЗ рдмреАрдЪ рдЕрд╕рдВрдЧрддрддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред

рдЖрдк рдЕрдВрддрд┐рдо рдЖрдЙрдЯрдкреБрдЯ рднреА рджреЗрдЦреЗрдВрдЧреЗ waf рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдХ, рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

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 рд╡рд┐рддрд░рдг рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ "рдкрд╛рд╕: ..." рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдХреНрд░рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рд╛рд░рд╛рдВрд╢ рдкрдВрдХреНрддрд┐ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЙрддреНрддреАрд░реНрдг рд╣реБрдП; рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рдпрд╛ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реБрдЖред) рдФрд░ wafрдФрд░ test.py рдорд╢реАрди рдХреЗ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдореЗрдВ рдХрд╛рдо рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрдирд╛ рджреЗрдЧрд╛ред

3.6 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛

рд╣рдо рдЖрдорддреМрд░ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ waf. рдпрд╣ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реИрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ waf рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде -тАп-run. рдЖрдЗрдП рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдорддреБрд▓реНрдп ns-3 рдЪрд▓рд╛рдПрдБ рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд╛рдЗрдк рдХрд░рдХреЗ:

$ ./waf --run hello-simulator

рд╡рдлрд╝ рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рддрдм waf рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

Hello Simulator

рдмрдзрд╛рдИ рд╣реЛ! рдЕрдм рдЖрдк рдПрдирдПрд╕-3 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ!

рдпрджрд┐ рдореБрдЭреЗ рдкрд░рд┐рдгрд╛рдо рди рджрд┐рдЦреЗрдВ рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрджрд┐ рдЖрдк рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ wafрдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ "рд╣реИрд▓реЛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░", рддреЛ рдРрд╕реА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ [рдмрд┐рд▓реНрдб-рд╡рд┐рде-рд╡рд╛рдлрд╝] рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЕрдкрдирд╛ рдмрд┐рд▓реНрдб рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЕрдиреБрдХреВрд▓рд┐рдд, рд▓реЗрдХрд┐рди рдореЛрдб рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ рдбрд┐рдмрдЧ. рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдирдПрд╕ -3 рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдХрд╕реНрдЯрдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рдШрдЯрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ "рдЕрдиреБрдХреВрд▓рд┐рдд" рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ "рд╣реИрд▓реЛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░" рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░реЗрдВ:

$ ./waf configure --build-profile=debug --enable-examples --enable-tests

рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдирд╛ waf рдПрдирдПрд╕-3 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдлрд┐рд░ рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рдХрд░рдХреЗ рдХреЛрдб рдХреЗ рд╡рд░реНрддрдорд╛рди рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

$ ./waf

рдЕрдм рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рддреЗ рд╣реИрдВ рд╣реИрд▓реЛ-рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░, рдЖрдкрдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

3.6.1 рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ

рдПрдирдПрд╕-3 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

$ ./waf --run <ns3-program> --command-template="%s <args>"

рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд╛рдо рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдПред рддрд░реНрдХ -тАп-command-template рдХреЗ рд▓рд┐рдП waf рдпрд╣ рдореВрд▓рддрдГ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдиреБрд╕реНрдЦрд╛ рд╣реИ waf рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Waf рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдб рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП %s рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╛рдо рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдирдПрд╕-3 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдЗрд╕рдХреЗ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

$ ./waf --run '<ns3-program> --arg1=value1 --arg2=value2 ...'

рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдЙрджрд╛рд╣рд░рдг рдкрд░реАрдХреНрд╖рдг рд╕реБрдЗрдЯреНрд╕ рдХреЛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИред рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдорд╛рдпрдЯреЗрд╕реНрдЯ рдирд╛рдордХ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ)ред рдКрдкрд░ рд╣рдордиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП ./test.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдмрд╛рд░-рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ. рдкреБрдХрд╛рд░рдирд╛ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ рд╕реАрдзреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

$ ./waf --run test-runner --command-template="%s --suite=mytest --verbose"

рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпреЗ рдЬрд╛рдпреЗрдВрдЧреЗ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ. рдЪреВрдБрдХрд┐ mytest рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рдЙрдкрд▓рдмреНрдз рдЯреЗрд╕реНрдЯ-рд░рдирд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд░реНрдЬ рдХрд░реЗрдВ:

$ ./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>"

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ ns-3 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд╛рдо рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ -тАп-run, рдФрд░ рдкреНрд░рдмрдВрдзрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рдпрд╣рд╛рдБ рдЬреА.рдбреА.рдмреА.) рддрд░реНрдХ рдореЗрдВ рдкрд╣рд▓рд╛ рдЯреЛрдХрди рд╣реИ -тАп-command-template. рд╡рд┐рдХрд▓реНрдк -тАп-args рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдЬреА.рдбреА.рдмреА.рдХрд┐ рд╢реЗрд╖ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди "рдирд┐рдЪрд▓реЗ" рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред (рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рдЬреА.рдбреА.рдмреА. рд╡рд┐рдХрд▓реНрдк рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ -тАп-args. рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рддрд░реНрдХреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ -тАп-command-template рдФрд░ рдХрдорд╛рдВрдб рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреА.рдбреА.рдмреА. рдЖрд░реНрдЧ.) рд╣рдо рдбрд┐рдмрдЧрд░ рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд░реЗрд╕рд┐рдкреА рдФрд░ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

$ ./waf --run test-runner --command-template="gdb %s --args --suite=mytest --verbose"

3.6.3 рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛

рд╡рдлрд╝ рдХреЛ рдПрдирдПрд╕-3 рдкреЗрдбрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦреА рдЬрд╛рдПрдВрдЧреАред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ ns-3 рд╕реНрд░реЛрдд рдЯреНрд░реА рдХреЗ рдмрд╛рд╣рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рддрд░реНрдХ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ -тАп-cwd:

$ ./waf --cwd=...

рдЖрдкрдХреЛ рдЕрдкрдиреА рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ:

$ function waff {
CWD="$PWD" 
cd $NS3DIR >/dev/null 
./waf --cwd="$CWD" $*
cd - >/dev/null 
}

рдХрдорд╛рдВрдб рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдпрд╣ рд╕рдЬрд╛рд╡рдЯ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреА рд╣реИ, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рддреА рд╣реИ wafрдФрд░ рдлрд┐рд░ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИ waf рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╣реЗрдЬреА рдЧрдИ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдо рдЯреАрдо рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ -тАп-cwd рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ Waf рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред

рдЬрд╛рд░реА: рдЕрдзреНрдпрд╛рдп 4

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ