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

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

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

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

рд╕реБрд░реБ рдЧрд░реНрджреИ

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

рей.рез рдЕрд╡рд▓реЛрдХрди

ns-3 рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕рд╣рдпреЛрдЧреА рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд░реВрдкрдорд╛ рдмрдирд╛рдЗрдПрдХреЛ рдЫред рд╕рднрд╛рдХреЛ рд╕рдордпрдорд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рдХреЛрдб рдпреА рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫред C++ рд╡рд╛ рдкрд╛рдЗрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВ рдЕрдиреБрдХреВрд▓рди рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рд▓реЗрдЦреНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

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

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

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

рдзреЗрд░реИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ ns-3 рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рдореВрд▓ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдпреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫред

3.2 рдкреВрд░реНрд╡ рд╢рд░реНрддрд╣рд░реВ

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

рдпрд╕ рд╡рд┐рдХрд┐рдХреЛ рдкреВрд░реНрд╡рд╛рдиреБрднреВрддрд┐ рдЦрдгреНрдбрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп ns-3 рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрди рдХреБрди рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрджрдЫ рд░ рд▓рд┐рдирдХреНрд╕ рд╡рд╛ macOS рдХреЛ рд╕рд╛рдЭрд╛ рд╕реНрд╡рд╛рджрд╣рд░реВрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдЖрджреЗрд╢рд╣рд░реВ рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

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

рдЙрдкрдХрд░рдг рдкреНрдпрд╛рдХреЗрдЬ/рд╕рдВрд╕реНрдХрд░рдг

  • C++ рдХрдореНрдкрд╛рдЗрд▓рд░
    clang++ рд╡рд╛ g++ (g++ рд╕рдВрд╕реНрдХрд░рдг рек.реп рд╡рд╛ рдЙрдЪреНрдЪ)
  • рдЕрдЬрдЧрд░
    python2 рд╕рдВрд╕реНрдХрд░рдг >= 2.7.10, рд╡рд╛ python3 рд╕рдВрд╕реНрдХрд░рдг >=3.4
  • Git
    рдХреБрдиреИ рдкрдирд┐ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (GitLab.com рдорд╛ ns-3 рдкрд╣реБрдБрдЪ рдЧрд░реНрди)
  • tar
    рдХреБрдиреИ рдкрдирд┐ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (NS-3 рд░рд┐рд▓рд┐рдЬ рдЕрдирдкреНрдпрд╛рдХ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА)
  • bunzip2
    рдХреБрдиреИ рдкрдирд┐ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (ns-3 рд░рд┐рд▓рд┐рдЬ рдЕрдирдкреНрдпрд╛рдХ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА)

рдкрд╛рдЗрдердирдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН python -Vред G++ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН g++ -vред рдпрджрд┐ рдХреБрдиреИ рдЙрдкрдХрд░рдг рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рдЫ рд╡рд╛ рдзреЗрд░реИ рдкреБрд░рд╛рдиреЛ рдЫ рднрдиреЗ, рдХреГрдкрдпрд╛ ns-3 рд╡рд┐рдХрд┐ рдкреГрд╖реНрдардорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд╛рдЗрдбрд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрдм рджреЗрдЦрд┐, рд╣рд╛рдореА рдорд╛рдиреНрджрдЫреМрдВ рдХрд┐ рдкрд╛рдардХрд▓реЗ рд▓рд┐рдирдХреНрд╕, MacOS, рд╡рд╛ рд▓рд┐рдирдХреНрд╕ рдЗрдореБрд▓реЗрдЯрд░ рдЪрд▓рд╛рдЙрдБрджреИрдЫ, рд░ рдХрдореНрддрд┐рдорд╛ рдорд╛рдерд┐рдХрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреНред

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

рдпреЛ ns-3 рдХреЛ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рд░ рдкреНрдпрд╛рдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗ рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрдХреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рд╣реЛред ns-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 

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

рдпреА рдЪрд░рдгрд╣рд░реВ рдкрдЫреНрдпрд╛рдЙрдБрджрд╛ рддрдкрд╛рдИрдВрд▓рд╛рдИ 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

рддрдкрд╛рдИрдВ рдЕрдм ns-3 рдЖрдзрд╛рд░ рд╡рд┐рддрд░рдг рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рддрдпрд╛рд░ рд╣реБрдиреБрд╣реБрдиреНрдЫ рд░ ns-3 рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рдЦрдгреНрдбрдорд╛ рдЬрд╛рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

3.3 Git рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ ns-3 рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрджреИ

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

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

$ cd 
$ mkdir workspace 
$ cd workspace 
$ git clone https://gitlab.com/nsnam/ns-3-allinone.git 
$ cd ns-3-allinone 

рдпрд╕ рдЪрд░рдгрдорд╛, рддрдкрд╛рдИрдВрдХреЛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рджреГрд╢реНрдп ns-3-allinone рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд░рд┐рд▓реАрдЬ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рднрдиреНрджрд╛ рдереЛрд░реИ рдлрд░рдХред рдпреЛ рдпрд╕реНрддреЛ рдХреЗрд╣рд┐ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫ:

$ ls
build.py constants.py download.py README util.py

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

$ python download.py

рд╡рд╛ рдЭрдгреНрдбрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ ns-3 рд░рд┐рд▓реАрдЬрд▓рд╛рдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджрд┐рдиреБрд╣реЛрд╕реН -n рд░рд┐рд▓реАрдЬ рдирдореНрдмрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрди:

$ python download.py -n ns-3.29

рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдпреЛ рдЪрд░рдг рдкрдЫрд┐ ns-3-allinone рдердк рднрдгреНрдбрд╛рд░рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдиреЗрдЫ ns-3, рдмреЗрдХ, pybindgen ╨╕ netanim.

рднрдиреНрдиреБ
рд╕рдлрд╛ Ubuntu16.04 рдХреЛ рд╕рд╛рде рдореЗрд╕рд┐рдирдорд╛, рдореИрд▓реЗ рдпрд╕рдорд╛ рдЖрджреЗрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ: $ sudo python3 download.py -n ns-3.29 (рдпрд╕рдкрдЫрд┐ рдЕрдиреБрд╡рд╛рджрдХрдХрд╛ рдиреЛрдЯрд╣рд░реВ)ред

3.3.1 рдмреЗрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ ns-3 рд▓реЛрдб рдЧрд░реНрджреИ

рдорд╛рдерд┐рдХрд╛ рджреБрдИ рд╡рд┐рдзрд┐рд╣рд░реВ (рд╕реНрд░реЛрдд рдЕрднрд┐рд▓реЗрдЦ рд╡рд╛ рднрдгреНрдбрд╛рд░ ns-3-allinone Git рдорд╛рд░реНрдлрдд) рдзреЗрд░реИ рдПрдбрдЕрдирд╣рд░реВрд╕рдБрдЧ рд╕рд░рд▓ ns-3 рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рдЫредpybindgen рдкрд╛рдЗрдерди рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд░ netanim рдиреЗрдЯрд╡рд░реНрдХ рдПрдирд┐рдореЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐)ред ns-3-allinone рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рддреЗрд╕реНрд░реЛ рднрдгреНрдбрд╛рд░ рднрдирд┐рдиреНрдЫ рдмреЗрдХ.

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

рднрдиреНрдиреБ
CradleNetwork рд╕рд┐рдореБрд▓реЗрд╢рди Cradle рдПрдЙрдЯрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рднрд┐рддреНрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ TCP/IP рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреНрдпрд╛рдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ ns-3 рд╕реНрдерд╛рдкрдирд╛ рдЙрдиреНрдирдд рд╡рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдХреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпреЛ рд╕реНрдерд╛рдкрдирд╛ рдорд╛рд░реНрдЧ рдЕрдиреБрд╕рд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдкрдЫрд┐рд▓реНрд▓реЛ ns-3 рд╡рд┐рдЬреНрдЮрдкреНрддрд┐рдорд╛ рдмреЗрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЯрд╛рд░ рд░рд┐рд▓реАрдЬрдорд╛ рдердкрд┐рдпреЛред рд░рд┐рд▓реАрдЬрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд░рд┐рд▓реАрдЬрдХреЛ рд╕рдордпрдорд╛ рд╣рд╛рд▓рдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддреНрдпреЛ рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╕рдВрд╕реНрдХрд░рдг рдмреЗрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рд░рд┐рд▓реАрдЬ ns-3.29 рд╕рдБрдЧ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, ns-3 рд╡рд╛ рдкрд╣рд┐рд▓реЗрдХреЛ рд░рд┐рд▓реАрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рдкрдЫрд┐ рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди (рдпрджрд┐ рдкреНрдпрд╛рдХреЗрдЬ рд╡рд┐рд╡рд░рдг рдлрд╛рдЗрд▓ bakeconf.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 рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ред рдЕрд░реНрдХреЛ рдЪрд░рдг рдпреА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд░ рддрдкрд╛рдИрдВрдХреЛ рдордирдкрд░реНрдиреЗ ns-3 рд╡рд┐рддрд░рдг рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛред рдзреЗрд░реИ рдЕрдиреБрдХреВрд▓рди рд▓рдХреНрд╖реНрдпрд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН:

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

  2. ns-3-dev: рд╕рдорд╛рди рдореЛрдбреНрдпреБрд▓, рддрд░ рд╡рд┐рдХрд╛рд╕ рд░реВрдЦрдмрд╛рдЯ рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ;

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

  4. ns-3-allinone: рдореЛрдбреНрдпреБрд▓рдХреЛ рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╕реНрддреИ allinoneрддрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ред

рднрдиреНрдиреБ
рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рд░рд╛рдЙрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдореЛрдбреНрдпреБрд▓рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ред

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

рд╣рд╛рд▓рдХреЛ рд╡рд┐рдХрд╛рд╕ рд╕реНрдиреНрдпрд╛рдкрд╕рдЯ (рдЧреИрд░-рд░рд┐рд▓реАрдЬ) 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

рдпрд╕рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рд░рд╛рдЦреНрдЫ bake.py рд╢реЗрд▓ рдорд╛рд░реНрдЧрдорд╛ рдЬрд╛рдиреНрдЫ рд░ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВрд▓рд╛рдИ рдпрд╕рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ рдмреЗрдХред рдХреЗрд╣рд┐ рдкреНрд░рдпреЛрдЧ рдорд╛рдорд┐рд▓рд╛рдорд╛ рдмреЗрдХ, рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ 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 ...

рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, Mercurial, CVS, Git рд░ рдмрдЬрд╛рд░ рдЬрд╕реНрддрд╛ рдЕрдкрд▓реЛрдб рдЙрдкрдХрд░рдгрд╣рд░реВ рдпрд╕ рдЪрд░рдгрдорд╛ рдЖрд╡рд╢реНрдпрдХ рдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рд╣рд░рд╛рдПрдХреЛ рдЙрдкрдХрд░рдгрд╣рд░реВ рддрдкрд╛рдЗрдБрдХреЛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдорд╛рдиреНрдп рддрд░рд┐рдХрд╛рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрд╕рд░реА рдерд╛рд╣рд╛ рдЫ) рд╡рд╛ рдорджреНрджрддрдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд▓рд╛рдИ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрд░реНрдХреЛ, рд╕рдлреНрдЯрд╡реЗрдпрд░ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

$ ./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 рд╡рд┐рдзрд╛рдирд╕рднрд╛ ns-3

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

3.4.1 build.py рдХреЛ рд╕рд╛рде рднрд╡рди

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

рд░рд┐рд▓реАрдЬ рдЕрднрд┐рд▓реЗрдЦ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рдЯрд╛рд░рдмрд▓рднрд┐рддреНрд░ ns-3-allinone рддреНрдпрд╣рд╛рдБ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫ рдЬрд╕рд▓реЗ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди рд╕рдХреНрдЫред рдпрд╕рд▓рд╛рдИ build.py рднрдирд┐рдиреНрдЫред рдпрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдорд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдЙрдкрдпреЛрдЧреА рддрд░рд┐рдХрд╛рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗрдЫред рдпрджреНрдпрдкрд┐, рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ ns-3 рд╕рдБрдЧ рдердк рдЙрдиреНрдирдд рд╕реЗрдЯрдЕрдк рд░ рдХрд╛рдордорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ ns-3 рдХреЛ рдЖрдлреНрдиреИ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА, Waf рдХреЛ рдкреНрд░рдпреЛрдЧ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫ, рдЬреБрди рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рдкрдЫрд┐ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдиреЗрдЫред

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

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

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

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

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

3.4.2 рдмреЗрдХ рд╕рдВрдЧ рднрд╡рди

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдгреНрдбрд╛рд░рд╣рд░реВрдмрд╛рдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдорд╛рдерд┐ рдмреЗрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ ns-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" рд▓рд╛рдИ рдХрд▓ рдЧрд░реЗрд░ рдПрдХреИ рдкрдЯрдХ рдбрд╛рдЙрдирд▓реЛрдб рд░ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгрд╣рд░реВ рджреБрд╡реИ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

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

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

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

$ ./bake.py show

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

3.4.3 Waf рд╕рдБрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

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

$ ./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 suid рдмрд┐рдЯ рд╕реЗрдЯ рдЧрд░реНрди "рд░рдирдЯрд╛рдЗрдордорд╛ рд╕рдореВрд╣ рдЖрдИрдбреА рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ред рдпреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рд░ рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд╕реБрд╡рд┐рдзрд╛ "рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫреИрди" рдХреЛ рд░реВрдкрдорд╛ рджреЗрдЦрд┐рдиреНрдЫред рдЕрдиреНрддрдорд╛, рд╕рдХреНрд╖рдо рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН Waf рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕рдВрдЧ --check-config.

рдЕрдм рдлрд┐рд░реНрддрд╛ рдЬрд╛рдФрдВ рд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реА рдбрд┐рдмрдЧ рдирд┐рд░реНрдорд╛рдгрдорд╛ рдлрд░реНрдХреМрдВред

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

рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдЕрдм рд╕реЗрдЯ рдЕрдк рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рддрдкрд╛рдИрд▓реЗ рдЯрд╛рдЗрдк рдЧрд░реЗрд░ ns-3 рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

$ ./waf

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

рджрд┐рдЗрдПрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрди рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди, рддреНрдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдЖрджреЗрд╢ рдЫ:

$ ./waf --check-profile 
Waf: Entering directory `/path/to/ns-3-allinone/ns-3.29/build' 
Build profile: debug

рдорд╛рдерд┐рдХреЛ рдкрд░рд┐рджреГрд╢реНрдп build.py рддрд░реНрдХрд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ --enable-examples ╨╕ --enable-tests, рддрд░ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ Waf рдпрд╕рд▓реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди:

$ ./build.py --disable-python

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╕реНрддреЛ рд╣реБрдиреЗрдЫ:

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

рдпрджреНрдпрдкрд┐, рд╡рд┐рд╢реЗрд╖ рдЕрдкрд░реЗрдЯрд░ - - рдорд╛рд░реНрдлрдд рдердк рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ wafрддреНрдпрд╕реИрд▓реЗ рдорд╛рдерд┐рдХреЛ рд╕рдЯреНрдЯрд╛ рдирд┐рдореНрди рдЖрджреЗрд╢рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ:

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

рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рдореБрдЦреНрдп рдЖрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫ ./waf рдХрдиреНрдлрд┐рдЧрд░ --disable-pythonред рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдердк рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╕реБрдЭрд╛рд╡рд╣рд░реВ рдЫрдиреН Waf.

рдирд┐рд░реНрдорд╛рдг рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрджреИ

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

рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдлреЗрдбреЛрд░рд╛ 3.28 рдХреЛ рд▓рд╛рдЧреА рдкрд╣рд┐рд▓реЗ nsтАС28 рдХреЛ рд░рд┐рд▓реАрдЬ рдерд┐рдпреЛ, рдЬрд╕рдорд╛ рдирдпрд╛рдБ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рдерд┐рдпреЛред gcc (gcc-рез8реи)ред рд░рд┐рд▓рд┐рдЬ ns-3.28 рд╡рд╛ Fedora 28 рдЕрдиреНрддрд░реНрдЧрдд рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ Gtk2+ рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛, рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫ:

/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h:59:8: error: unnecessary parentheses ,!in declaration of тАШ__gtk_reserved1тАЩ [-Werror=parentheses] void (*__gtk_reserved1);

nsтАС3.28.1 рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рд░рд┐рд▓реАрдЬрд╣рд░реВрдорд╛, in Waf рдпреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рдЫред рдпрд╕рд▓реЗ g++ рд░ clang++ рдорд╛ "-Werror" рдЭрдгреНрдбрд╛ рд╕реЗрдЯ рдЧрд░реНрди рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрдЫред рдпреЛ "--disable-werror" рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╕рдордпрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрдкрд░реНрдЫ:

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

рдХрдиреНрдлрд┐рдЧрд░ рд╡рд╛ рднреЗрд▓рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

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

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

$ ./waf --help

рдЕрд░реНрдХреЛ рдЦрдгреНрдбрдорд╛ рд╣рд╛рдореА рдХреЗрд╣реА рдкрд░реАрдХреНрд╖рдг рд╕рдореНрдмрдиреНрдзрд┐рдд рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рджреЗрдЦреЗрдХрд╛ рдЫреМрдВ рдХрд┐ рддрдкрд╛рдЗрдБ рдХрд╕рд░реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Waf рд╕рднрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдмрдЧ ╨╕ рдЕрдиреБрдХреВрд▓рд┐рдд:

$ ./waf --build-profile=debug

рддреНрдпрд╣рд╛рдБ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкрдирд┐ рдЫ, рдЬрд╛рд░реАред рд╡рд┐рдХрд▓реНрдк -d рдХреЛ рдкрд░реНрдпрд╛рдпрд╡рд╛рдЪреА рдЫ --build-profileред рдирд┐рд░реНрдорд╛рдг рдкреНрд░реЛрдлрд╛рдЗрд▓рд▓реЗ рд▓рдЧрд┐рдЩ, рджрд╛рд╡реАрд╣рд░реВ, рд░ рдХрдореНрдкрд╛рдЗрд▓рд░ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рд╕реНрд╡рд┐рдЪрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫ:

ns-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++ рдХрдореНрдкрд╛рдЗрд▓рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ ( g ++)ред рдЬреЗ рд╣реЛрд╕реН, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдПрдХреЛ рдПрдЙрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Waf C++ рдХрдореНрдкрд╛рдЗрд▓рд░, CXX рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрд░ред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, C++ рдХрдореНрдкрд╛рдЗрд▓рд░ Clang, clang++ рдХреЛ рдЙрдкрдпреЛрдЧ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА,

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

рддреНрдпрд╕реИ рдЧрд░реА рддрдкрд╛рдЗрдБ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Waf рдкреНрд░рдпреЛрдЧ рдЧрд░реА рд╡рд┐рддрд░рд┐рдд рд╕рдВрдХрд▓рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди distcc:

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

distcc рд░ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рд╕рдВрдХрд▓рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реА рдХрд╛рдЧрдЬрд╛рдд рдЦрдгреНрдбрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрдардорд╛ рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред ns-3 рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджрд╛ рдХрдореНрдкрд╛рдЗрд▓рд░ рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВ рдердкреНрди, CXXFLAGS_EXTRA рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕реЗрдЯрд┐рдЩ

Waf рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдирд╣рд░реВрдорд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рд╕рдВрдХрд▓рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдпрд╣рд░реВ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН рдирд┐рд░реНрдорд╛рдг, рд░ Waf рд▓рд╛рдИ рдпреА рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдпрд╣рд░реВрдХреЛ рд╕реНрдерд╛рди рдерд╛рд╣рд╛ рднрдПрдХреЛрд▓реЗ, рддреНрдпрд╣рд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдЕрдиреНрдпрддреНрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред

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

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

рдпрджрд┐ рдкрдЫрд┐, рдирд┐рд░реНрдорд╛рдг рдкрдЫрд┐, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдЖрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ ./waf, рдЙрдкрд╕рд░реНрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ /opt/local.

рдЯреЛрд▓реА ./waf clean рдпрджрд┐ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗрдЫ рднрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреБрди: рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ Waf рдлрд░рдХ рдЙрдкрд╕рд░реНрдЧ рдЕрдиреНрддрд░реНрдЧрддред

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

Waf рдПрдХрд▓

ns-3 рд╕реНрд░реЛрдд рд░реВрдЦрдХреЛ рд╢реАрд░реНрд╖ рддрд╣рдорд╛, рддреНрдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ Waf рд▓рд┐рдкрд┐ рдЫред рдПрдХрдкрдЯрдХ рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдзреЗрд░реИ рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ scratch/ рд╡рд╛ рдЧрд╣рд┐рд░реЛ рдорд╛src/... рд░ рдПрдХреИ рд╕рдордпрдорд╛ рджреМрдбрдиреБ рдкрд░реНрдЫ Wafред рддрдкрд╛рдИрдВ рдХрд╣рд╛рдБ рд╣реБрдиреБрд╣реБрдиреНрдЫ рд╕рдореНрдЭрдирд╛ рд░ рднрд╛рдЧреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Waf рдирд┐рдореНрди рдЕрдиреБрд╕рд╛рд░:

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

рддрд░ рдпреЛ рдХрдард┐рди рд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рдг рд╣реБрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рддреНрдпрд╣рд╛рдБ рд░рд╛рдореНрд░реЛ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЫрдиреНред рдПрдЙрдЯрд╛ рд╕рд╛рдорд╛рдиреНрдп рддрд░рд┐рдХрд╛ рднрдиреЗрдХреЛ рдкрд╛рда рд╕рдореНрдкрд╛рджрдХ рдЬрд╕реНрддреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛ emacs рд╡рд╛ vim, рдЬрд╕рдорд╛ рджреБрдИ рдЯрд░реНрдорд┐рдирд▓ рд╕рддреНрд░рд╣рд░реВ рдЦреЛрд▓рд┐рдиреНрдЫрдиреН, рдПрдЙрдЯрд╛ ns-3 рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рджреЛрд╕реНрд░реЛ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдорд╛рддреНрд░ рдЫ рдЯрд╛рд░рдмрд▓, рддреНрдпрд╕рдкрдЫрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд▓реЗ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫ:

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

$ cd scratch 
$ waff build

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

3.5 рдкрд░реАрдХреНрд╖рдг ns-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)

рдпреЛ рдЖрджреЗрд╢ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ ns-3 рд╡рд┐рддрд░рдг рд╕рд╣реА рд░реВрдкрдорд╛ рдмрдирд╛рдЗрдПрдХреЛ рдЫ рднрдиреЗрд░ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рдЪрд▓рд╛рдЗрдиреНрдЫред (рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ "PASS: ..." рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рдХреНрд░рдо рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫ, рдпреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛред рдХреЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╕рд╛рд░рд╛рдВрд╢ рд░реЗрдЦрд╛рд▓реЗ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЙрддреНрддреАрд░реНрдг рднрдПрдХреЛ рджреЗрдЦрд╛рдЙрдБрдЫ; рдХреБрдиреИ рдкрдирд┐ рдкрд░реАрдХреНрд╖рдг рдЕрд╕рдлрд▓ рд╡рд╛ рдХреНрд░реНрдпрд╛рд╕ рднрдПрдХреЛ рдЫреИрдиред) рд░ Wafрд░ test.py рдореЗрд╕рд┐рдирдХреЛ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░рд╣рд░реВрдорд╛ рдХрд╛рдорд▓рд╛рдИ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдмрдирд╛рдЙрдиреЗрдЫред

3.6 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдБрджреИ

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

$ ./waf --run hello-simulator

Waf рд▓реЗ рдкрд╣рд┐рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдареАрдХрд╕рдБрдЧ рдмрдирд╛рдЗрдПрдХреЛ рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫ рд░ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗрдЫред рддреНрдпрд╕рдкрдЫрд┐ Waf рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрд╛рджрди рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗрдЫред

Hello Simulator

рдмрдзрд╛рдИ рдЫ! рддрдкрд╛рдИрдВ рдЕрдм ns-3 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╣реБрдиреБрд╣реБрдиреНрдЫ!

рдореИрд▓реЗ рдирддрд┐рдЬрд╛ рдирджреЗрдЦреЗрдорд╛ рдХреЗ рдЧрд░реНрдиреБрдкрд░реНрдЫ?

рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рджреЗрдЦреНрдиреБрд╣реБрдиреНрдЫ Wafрдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдореНрдкрдиреНрди рднрдПрдХреЛ рд╕рдВрдХреЗрдд рдЧрд░реНрджреИ, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреНрдиреБрднрдПрди "рдирдорд╕реНрддреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░", рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпрд╣рд╛рдБ рд╕рдореНрднрд╡ рдЫ рдХрд┐ [Build-with-Waf] рдЦрдгреНрдбрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдирд┐рд░реНрдорд╛рдг рдореЛрдб рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрднрдпреЛ рдЕрдиреБрдХреВрд▓рд┐рдд, рддрд░ рдореЛрдбрдорд╛ рдлрд┐рд░реНрддрд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рдЫреБрдЯреЗрдХреЛ рдЫ рдбрд┐рдмрдЧред рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯрд▓реЗ рд▓рдЧрд┐рдЩ рдЧрд░реНрдиреЗ рд░ рдХрдиреНрд╕реЛрд▓рдорд╛ рдЕрдиреБрдХреВрд▓рди рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рд╢реЗрд╖ ns-3 рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдпрд╕ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрдмрд╛рдЯ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рддрдГ рдЕрдХреНрд╖рдо рд╣реБрдиреНрдЫ рдЬрдм рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдХрдореНрдкрд╛рдЗрд▓ рд╣реБрдиреНрдЫ - рдпреЛ "рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ" рд╣реБрдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ "рд╣реЗрд▓реЛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░" рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреНрдиреБрднрдПрди рднрдиреЗ, рдирд┐рдореНрди рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

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

рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди Waf ns-3 рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди, рдЬрд╕рдорд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреНред рддрдкрд╛рдИрдВрд▓реЗ рдЯрд╛рдЗрдк рдЧрд░реЗрд░ рдХреЛрдбрдХреЛ рд╣рд╛рд▓рдХреЛ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрдкрд░реНрдЫ

$ ./waf

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

3.6.1 рдЖрджреЗрд╢ рд░реЗрдЦрд╛ рддрд░реНрдХрд╣рд░реВ

ns-3 рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рдЖрджреЗрд╢ рд░реЗрдЦрд╛ рддрд░реНрдХрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди, рдирд┐рдореНрди рдврд╛рдБрдЪрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

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

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

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

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

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

рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рддрд░реНрдХрд╣рд░реВ рдкрд╛рд░рд┐рдд рдЧрд░рд┐рдиреЗрдЫ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХред Mytest рдЕрд╡рд╕реНрдерд┐рдд рдирднрдПрдХреЛрд▓реЗ, рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗрдЫред рдЙрдкрд▓рдмреНрдз рдкрд░реАрдХреНрд╖рдг-рдзрд╛рд╡рдХ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрд╛рдкреНрди, рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

$ ./waf --run test-runner --command-template="%s --help"

рей.рем.реи рдбрд┐рдмрдЧрд┐рдЩ

ns-3 рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рдЕрд░реНрдХреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдиреНрддрд░реНрдЧрдд рдЪрд▓рд╛рдЙрди, рдЬрд╕реНрддреИ рдбрд┐рдмрдЧрд░ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, gdb) рд╡рд╛ рдореЗрдореЛрд░реА рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, valgrind), рд╕рдорд╛рди рдлрд╛рд░рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН -тАп-command-template = "тАж"ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдбрд┐рдмрдЧрд░рдорд╛ рдЪрд▓рд╛рдЙрди gdb рддрд░реНрдХ рд╕рдВрдЧ рддрдкрд╛рдИрдХреЛ рдирдорд╕реНрдХрд╛рд░-рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ ns-3 рдХрд╛рд░реНрдпрдХреНрд░рдо:

$ ./waf --run=hello-simulator --command-template="gdb %s --args <args>"

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

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

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

Waf рд▓рд╛рдИ ns-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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди