αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αžŽαŸ’αžαžΆαž‰ ns-3 αŸ” αž‡αŸ†αž–αžΌαž€αž‘αžΈ 3

αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αžŽαŸ’αžαžΆαž‰ ns-3 αŸ” αž‡αŸ†αž–αžΌαž€αž‘αžΈ 3
αž‡αŸ†αž–αžΌαž€ 1,2

3 αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜
3.1 αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…
3.2 αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž»αž“
3.2.1 αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ ns-3 αž‡αžΆαž”αžŽαŸ’αžŽαžŸαžΆαžšαž”αŸ’αžšαž—αž–
3.3 αž€αžΆαžšαž‘αžΆαž‰αž™αž€ ns-3 αžŠαŸ„αž™αž”αŸ’αžšαžΎ Git
3.3.1 αž€αŸ†αž–αž»αž„αž•αŸ’αž‘αž»αž€ ns-3 αžŠαŸ„αž™αž”αŸ’αžšαžΎ Bake
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.2 αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ
3.6.3 αžαžαž€αžΆαžšαž„αžΆαžš

αž‡αŸ†αž–αžΌαž€αž‘αžΈ 3

αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜

αž‡αŸ†αž–αžΌαž€αž“αŸαŸ‡αž˜αžΆαž“αž‚αŸ„αž›αž”αŸ†αžŽαž„αžšαŸ€αž”αž…αŸ†αž’αŸ’αž“αž€αž’αžΆαž“αž±αŸ’αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžŠαŸ‚αž›αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžŠαŸ‚αž›αžŠαŸ†αž‘αžΎαž„ ns-3 αž‘αŸαŸ” αžœαžΆαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž›αžΎαžœαŸαž‘αž·αž€αžΆαžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžš αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž»αž“ αžšαž”αŸ€αž”αž‘αž‘αž½αž›αž”αžΆαž“ ns-3 αžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαž ns-3 αž“αž·αž„αžšαž”αŸ€αž”αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαž€αžŸαžΆαž„ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαžΆαž˜αž‰αŸ’αž‰αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

3.1 αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…

αž§αž”αž€αžšαžŽαŸαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ ns-3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž αž€αžΆαžšαŸ” αž€αŸ†αž‘αž»αž„αž–αŸαž›αž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆ αž€αžΌαžŠαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ C++ ឬ Python αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αŸ”

Ns-3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž€αžΌαžŠαž”αŸ’αžšαž—αž– αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αžŠαŸ…αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž„αžŸαž„αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‡αžΆαž˜αž»αž“αžŸαž·αž“ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ ns-3 αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž αžΎαž™αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αžαž–αž½αž€αž‚αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αžαžΆαž˜αžšαž”αŸ€αž”αž“αŸαŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αž–αž·αžαž‡αžΆαž’αŸ’αžœαžΎαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžŠαŸ„αž™αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› ns-3 αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž˜αžΆαž“αž€αžΌαžŠαž”αŸ’αžšαž—αž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž…αž„αŸ‹αž‘αž‘αž½αž›αž™αž€αž€αžΆαžšαž„αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž“αž·αž„αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αžŸαžΌαž˜αž‘αžΆαž€αŸ‹αž‘αž„αž”αž‰αŸ’αž‡αžΈαžŸαŸ†αž”αž»αžαŸ’αžšαžšαž½αž˜ ns-αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ.

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž“αžΉαž„αž˜αžΎαž›αžœαž·αž’αžΈαž”αžΈαž™αŸ‰αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαž ns-3αŸ” αž‘αžΈαž˜αž½αž™αž‚αžΊαžαŸ’αžšαžΌαžœαž‘αžΆαž‰αž™αž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžšαž–αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαž˜αŸαŸ” αž‘αžΈαž–αžΈαžšαž‚αžΊαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž“αž·αž„αž€αžΆαžšαž•αŸ’αž‚αž»αŸ†αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž“αŸƒαž€αŸ†αžŽαŸ‚αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ ns-3 αŸ” αž‘αžΈαž”αžΈαž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžŸαžΆαž„αžŸαž„αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‘αž»αž€αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ ns-3 αŸ” αž™αžΎαž„αž“αžΉαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž§αž”αž€αžšαžŽαŸαž“αžΈαž˜αž½αž™αŸ— αžŠαŸ„αž™αžŸαžΆαžšαž§αž”αž€αžšαžŽαŸαž˜αžΆαž“αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž…αŸ”

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž›αžΈαž“αž»αž…αžŠαŸ‚αž›αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž’αžΆαž…αž†αŸ’αž„αž›αŸ‹αžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆ ns-3 αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΆαž€αž‰αŸ’αž…αž”αŸ‹αžŠαžΌαž…αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹? αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž…αž•αŸ’αžŸαŸαž„αŸ— (αž§αž‘αžΆαž αžšαžŽαŸ αžŠαŸαž”αŸ€αž“) αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαž ns-3 αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž˜αžΆαž“αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž‚αžΊαž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž–αžΈαž”αŸ’αžšαž—αž–αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŸαž·αž‘αŸ’αž’αž· ns-3 αž‡αžΆ root αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αŸ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎαž‚αžŽαž“αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž‚αŸ’αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αŸ”

3.2 αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž»αž“

αžŸαŸ†αžŽαž»αŸ†αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ ns-3 αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž˜αžΆαž“αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž˜αž½αž™αž…αŸ†αž“αž½αž“αž›αžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ ns-3 αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹ αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž‘αžΌαž‘αŸ…αž˜αž½αž™αž…αŸ†αž“αž½αž“ (αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜)αŸ– αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ C ++, Python αžŠαŸ‚αž›αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž€αžΌαžŠαž”αŸ’αžšαž—αž– (αž§αž‘αžΆαž αžšαžŽαŸ αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜, emacs ឬ αž›αŸαž”αžαŸ’αžšαž”αžΆαž€αŸ‹) αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžƒαŸ’αž›αžΆαŸ†αž„αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαŸ‚ Git αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž›αžΎαž€αžŠαŸ†αž”αžΌαž„αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αžΉαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž–αŸ’αžšαž½αž™αž”αžΆαžšαž˜αŸ’αž—αž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžšαžΆαž™αž€αžΆαžšαžŽαŸαž–αžΈαž˜αž»αžαž„αžΆαžšαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ ns-3 αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αžΆαžαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αžŠαŸ†αž‘αžΎαž„αž–αŸαž‰αž›αŸαž‰ αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžœαž·αž‚αžΈαžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ†αž–αŸαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‚αž“αŸ’αž›αžΉαŸ‡ αž“αž·αž„αž›αŸ’αž”αž·αž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž‘αŸ†αž–αŸαžšαž˜αž½αž™αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž‘αŸ†αž–αŸαžšαžŠαŸ†αž‘αžΎαž„ αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαŸαž„αŸ— αž˜αžΆαž“αž“αŸ…αŸ– https://www.nsnam.org/wiki/Installation.

αž•αŸ’αž“αŸ‚αž€αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž»αž“αž“αŸƒαžœαž·αž‚αžΈαž“αŸαŸ‡αž–αž“αŸ’αž™αž›αŸ‹αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžšαž‡αž˜αŸ’αžšαžΎαžŸ ns-3 αž‘αžΌαž‘αŸ… αž αžΎαž™αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αž–αž½αž€αžœαžΆαž“αŸ…αž›αžΎαžšαžŸαž‡αžΆαžαž·αž‘αžΌαž‘αŸ…αž“αŸƒαž›αžΈαž“αž»αž… ឬ macOS αž•αž„αžŠαŸ‚αžšαŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž‰αž™αž€αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαž±αž€αžΆαžŸαž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαžšαž»αž€αžšαž€αž‘αŸ†αž–αŸαžš ns-3 wiki αž¬αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŸαŸ†αžαžΆαž“αŸ‹αŸ– https://www.nsnam.orgαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒ ns-3 (ns-3.29) αž§αž”αž€αžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš ns-3αŸ–

αž€αž‰αŸ’αž…αž”αŸ‹αž§αž”αž€αžšαžŽαŸ/αž€αŸ†αžŽαŸ‚

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ C++
    clang++ ឬ g++ (g++ αž€αŸ†αžŽαŸ‚ 4.9 αž¬αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡)
  • αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹
    αž€αŸ†αžŽαŸ‚ python2 >= 2.7.10 αž¬αž€αŸ†αžŽαŸ‚ python3 >=3.4
  • Git
    αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαžŽαžΆαž˜αž½αž™ (αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž”αŸ’αžšαžΎ ns-3 αž“αŸ…αž›αžΎ GitLab.com)
  • tar
    αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαžŽαžΆαž˜αž½αž™ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž“αŸ’αž›αžΆαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ ns-3)
  • bunzip ្
    αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαžŽαžΆαž˜αž½αž™ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž“αŸ’αž›αžΆαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ ns-3)

αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αŸ†αžŽαŸ‚αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹ Python αžŸαžΌαž˜αžœαžΆαž™ python -V. αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αŸ†αžŽαŸ‚ g++ αžŸαžΌαž˜αžœαžΆαž™ g++ -v. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž”αž€αžšαžŽαŸαžŽαžΆαž˜αž½αž™αž”αžΆαžαŸ‹ αž¬αž…αžΆαžŸαŸ‹αž–αŸαž€ αžŸαžΌαž˜αž˜αžΎαž›αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžš ns-3 wiki αŸ”

αž…αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αž“αŸαŸ‡αžαž‘αŸ… αž™αžΎαž„αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž’αŸ’αž“αž€αž’αžΆαž“αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Linux, MacOS ឬ Linux emulator αž αžΎαž™αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžαžΆαž„αž›αžΎαŸ”

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 

αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαžαžΆαž„αž›αžΎ 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

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžšαž½αž…αžšαžΆαž›αŸ‹αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ ns-3 αž αžΎαž™αž’αžΆαž…αž”αž“αŸ’αžαž‘αŸ…αž•αŸ’αž“αŸ‚αž€αž“αŸ…αž›αžΎαž€αžΆαžšαž€αžŸαžΆαž„ ns-3 αŸ”

3.3 αž€αžΆαžšαž‘αžΆαž‰αž™αž€ ns-3 αžŠαŸ„αž™αž”αŸ’αžšαžΎ Git

αž›αŸαžαž€αžΌαžŠ ns-3 αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αž“αŸ…αž›αžΎ GitLab.com αž“αŸ… https://gitlab.com/nsnam/. αž€αŸ’αžšαž»αž˜ nsnam αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž“αžΌαžœαžƒαŸ’αž›αžΆαŸ†αž„αž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αŸ”

αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžƒαŸ’αž›αžΆαŸ†αž„ Git αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αŸ‚αž€ αž¬αž€αŸ’αž›αžΌαž“αž”αžšαž·αžŸαŸ’αžαžΆαž“ ns-3-allinone. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€ αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‚αž»αŸ†αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž„ ns-3 αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž‡αžΆαž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αžαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αž˜αžΈαž…αŸ†αž–αŸ„αŸ‡ Git αž–αžΆαž€αŸ’αž™ "fork" αž“αž·αž„ "clone" αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžŸαŸŠαžΆαŸ†αž“αžΉαž„αž’αŸ’αž“αž€αž‘αŸαŸ” αž”αžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž€αŸ’αž›αžΌαž“ (αž’αŸ’αžœαžΎαž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„) αžƒαŸ’αž›αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž›αžΎ 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

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž˜αžΆαž“αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž‘αžΆαž‰αž™αž€.pyαžŠαŸ‚αž›αž“αžΉαž„αž‘αžΆαž‰αž™αž€αž”αž“αŸ’αžαŸ‚αž˜ ns-3 αž“αž·αž„αž€αžΌαžŠαž”αŸ’αžšαž—αž–αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž’αŸ’αž“αž€αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž˜αž½αž™αŸ– αž‘αžΆαž‰αž™αž€αžšαžΌαž”αžαžαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ ns-3 αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αž„αŸ’αž’αžŸαŸ‹αŸ–

$ python download.py

αž¬αž…αžΌαž›αž…αž·αžαŸ’αžαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ ns-3 αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αž„αŸ‹ -n αžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž›αŸαžαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ–

$ python download.py -n ns-3.29

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‡αŸ†αž αžΆαž“αž“αŸαŸ‡αž‘αŸ…αžαž ns-3-allinone αžƒαŸ’αž›αžΆαŸ†αž„αž”αž“αŸ’αžαŸ‚αž˜αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž‰αž™αž€ ns-3, ដុត, pybindgen ΠΈ αž“αŸαžαžΆαž“αžΈαž˜.

αž€αžΆαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹
αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž˜αžΆαž“ Ubuntu16.04 αžŸαŸ’αž’αžΆαž αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αŸ…αžœαžΆαŸ– $ sudo python3 download.py -n ns-3.29 (αžαž‘αŸ…αž“αŸαŸ‡αž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαžΆαŸ†αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚)αŸ”

3.3.1 αž€αŸ†αž–αž»αž„αž•αŸ’αž‘αž»αž€ ns-3 αžŠαŸ„αž™αž”αŸ’αžšαžΎ Bake

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž–αžΈαžšαžαžΆαž„αž›αžΎ (αž”αžŽαŸ’αžŽαžŸαžΆαžšαž”αŸ’αžšαž—αž– αž¬αžƒαŸ’αž›αžΆαŸ†αž„ ns-3-allinone αžαžΆαž˜αžšαž™αŸˆ Git) αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ ns-3 αžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„ addons αž…αŸ’αžšαžΎαž“ (pybindgen αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αž„ Python αž“αž·αž„ αž“αŸαžαžΆαž“αžΈαž˜ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž›αž“αžΆαž”αžŽαŸ’αžαžΆαž‰) αŸ” αžƒαŸ’αž›αžΆαŸ†αž„αž‘αžΈαž”αžΈαžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸ…αž€αŸ’αž“αž»αž„ ns-3-allinone αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ… ដុត.

ដុត αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžšαž”αžŸαŸ†αžšαž½αž›αž€αžΆαžšαž€αžŸαžΆαž„αžŸαžΌαž αŸ’αžœαžœαŸ‚αžšαž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ ns-3 αŸ” ដុត αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ†αžŽαŸ‚αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒ ns-3 αž€αŸαžŠαžΌαž…αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž‰αž™αž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž€αŸ†αžŽαŸ‚αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ ns-3 αžŠαžΌαž…αž‡αžΆαž”αžšαž·αžŸαŸ’αžαžΆαž“αŸ” αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαž•αŸ’αž‘αžΆαž›αŸ‹, CradleNetwork Simulation CradleαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αž„ Python αžαŸ’αž˜αžΈ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ ns-3 αž•αŸ’αžŸαŸαž„αŸ—αŸ”

αž€αžΆαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹
CradleNetwork Simulation Cradle αž‚αžΊαž‡αžΆαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž‡αž„αŸ‹αž”αžŽαŸ’αžαžΆαž‰ TCP/IP αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αžŽαŸ’αžαžΆαž‰αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžšαŸ†αž–αžΉαž„αžαžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ ns-3 αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αžΉαž„αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ αž¬αž”αž“αŸ’αžαŸ‚αž˜ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžαžΆαž˜αžœαž·αž’αžΈαžŠαŸ†αž‘αžΎαž„αž“αŸαŸ‡αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αž ns-3 ដុត αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ tar αŸ” αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžšαž½αž˜αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αžΆαž‰αž™αž€αž€αŸ†αžŽαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸ…αž–αŸαž›αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ” αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž€αŸ†αžŽαŸ‚ αžŠαž»αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ 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

αž…αŸ†αžŽαžΆαŸ†αžαžΆαž’αŸ’αž“αž€αž”αžΆαž“αž•αŸ’αž‘αž»αž€αžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž› Python αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ ដុត αž“αž·αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ XML αŸ” αž‡αŸ†αž αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΆαž‰αž™αž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ ns-3 αž“αŸƒαž‡αž˜αŸ’αžšαžΎαžŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž‚αŸ„αž›αžŠαŸ…αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αž’αžΆαž…αžšαž€αž”αžΆαž“αŸ–

  1. ns-3.29αŸ– αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™; αžœαžΆαž“αžΉαž„αž‘αžΆαž‰αž™αž€αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„ tarball αŸ”

  2. ns-3-devαŸ– αž˜αŸ‰αžΌαžŒαž»αž›αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžΎαž€αžΌαžŠαž–αžΈαž˜αŸ‚αž€αž’αžΆαž„αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ”

  3. ns-allinone-3.29αŸ– αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΌαž…αž‡αžΆ Click routing αž“αž·αž„ Network Simulation Cradle, Openflow αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ ns-3αŸ”

  4. ns-3-allinoneαŸ– αžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž€αŸ†αžŽαŸ‚αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž› αžŠαžΆαž€αŸ‹β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž‚αŸ’αž“αžΆβ€‹αžαŸ‚αž˜αž½αž™αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ”

αž€αžΆαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹
αž…αž»αž… - αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΌαžŒαž»αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαžšαŸ‰αŸ„αžαž‘αŸαžšαŸ”

Openflow αž‚αžΊαž‡αžΆαž–αž·αž’αžΈαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αžαžΆαž˜αž”αžŽαŸ’αžαžΆαž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αžšαŸ‰αŸ„αžαž‘αŸαžš αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžαžΌαžš αžŠαŸ„αž™αž’αž“αž»αžœαžαŸ’αžαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž”αžŽαŸ’αžαžΆαž‰αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αžšαžΌαž”αžαžαž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ (αž˜αž·αž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™) ns-3 αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αŸ–https://gitlab.com/nsnam/ns-3-dev.git.

αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αŸ’αž™αžΆαž™αžΆαž˜αžšαž€αŸ’αžŸαžΆαžƒαŸ’αž›αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž›αŸ†αžŠαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αžœαžΆαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ†αž”αž“αŸ‹αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠαžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαž‘αŸ αžŸαžΌαž˜αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž•αŸ’αž›αžΌαžœαž€αžΆαžšαŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒαž€αžΌαžŠαžŠαŸ„αž™αžšαž»αž€αžšαž€αž”αž‰αŸ’αž‡αžΈαžƒαŸ’αž›αžΆαŸ†αž„ αž¬αžŠαŸ„αž™αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžš ns-3 ReleasesαŸ–https://www.nsnam.org/releases/ αž αžΎαž™αž…αž»αž…αž›αžΎαžαŸ†αžŽαž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž“αŸ’αžαž‡αžΆαž˜αž½αž™ ns-3.29 αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαž˜αžΆαžŸαž’αžΆαžαž» ns-3 αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸ ដុត. αž…αžΌαžšαž“αž·αž™αžΆαž™αž–αžΆαž€αŸ’αž™αžŽαŸ‚αž“αžΆαŸ†αž–αžΈαžšαž”αžΈαž’αŸ†αž–αžΈαž€αžΆαžšαž„αžΆαžš ដុត.

αžŠαž»αžαž“αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž—αž–αž€αž‰αŸ’αž…αž”αŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αžαž αž”αŸ’αžšαž—αž– αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‘αŸ…αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžšαŸ” ដុត αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž™αŸ„αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš ដុត αž˜αž·αž“β€‹αž˜αŸ‚αž“β€‹αž˜αž€β€‹αž–αžΈβ€‹αžαžβ€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‘αžΆαž‰β€‹αž™αž€β€‹αž“αŸ„αŸ‡β€‹αž‘αŸ αž‚αž½αžšαžαŸ‚β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž•αŸ’αž›αžΌαžœβ€‹αž‘αŸ… ដុត αž‘αŸ…αž€αžΆαž“αŸ‹αž•αŸ’αž›αžΌαžœαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (PATH environment variable) αž§αž‘αžΆαž αžšαžŽαŸαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ (αž§αž‘αžΆαž αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Linux bash shell)αŸ” αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αžαž "αžŠαž»αžαž“αŸ†" αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ 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 αž“αž·αž„ Bazaar αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž“αŸαŸ‡ αžŠαŸ„αž™αžŸαžΆαžšαž–αž½αž€αž‚αŸαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαž€αžΌαžŠαŸ” αž“αŸ…αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αžŸαžΌαž˜αžŠαŸ†αž‘αžΎαž„αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαžαŸ‹αžαžΆαž˜αžšαž”αŸ€αž”αž’αž˜αŸ’αž˜αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”) αž¬αž‘αžΆαž€αŸ‹αž‘αž„αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αŸ†αž“αž½αž™αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžŸαžΆαž€αž›αŸ’αž”αž„αž‘αžΆαž‰αž™αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ–

$ ./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 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžŸαžΆαž„αžŸαž„αŸ‹αž αŸ…αžαžΆ αžœαŸ‰αžΆαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αžΉαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ αžœαŸ‰αžΆαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αž™αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž¬αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž˜αž»αž“αž–αŸαž›αž’αŸ’αž“αž€αž’αžΆαž“αž’αŸ†αž–αžΈ αžœαŸ‰αžΆαžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž› 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 αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž§αž‘αžΆαž αžšαžŽαŸ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αž¬αžŠαž€αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžŸαžΆαžšαž›αž‘αŸ’αž’αž•αž›αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αžŠαŸ„αž™αžŸαŸ’αž‚αŸ’αžšαžΈαž” αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž”αž„αŸ’αž€αžΎαžαž•αŸ’αž“αŸ‚αž€αž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž•αŸ’αž‘αž»αž€αŸ” αžŠαŸ†αž”αžΌαž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž€αžΎαžαž…αž›αž“αžΆ αž“αŸαžαžΆαž“αžΈαž˜αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž›αžΎαž„αž…αž„ 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 αž’αžΆαž‚αžΆαžšαž‡αžΆαž˜αž½αž™αžŠαž»αžαž“αŸ†

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαž“αž”αŸ’αžšαžΎ bake αžαžΆαž„αž›αžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αž‚αž˜αŸ’αžšαŸ„αž„ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž 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 αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αž„ Python αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΎαžœαžΆαž‘αŸ (αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžšαž αžΌαžαžŠαž›αŸ‹αž–αž½αž€αž‚αŸαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš ns-3) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αž·αž“αž’αžΎαž–αžΎαžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž”αžšαžΆαž‡αŸαž™ αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž“αžΌαžœαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαž”αžΆαžαŸ‹αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αŸ–

$ ./bake.py show

αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž•αŸ’αžŸαŸαž„αŸ—αž“αŸƒαž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž€αžΎαžαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαŸ”

3.4.3 αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž˜αž½αž™ Waf

αžšαž αžΌαžαž˜αž€αžŠαž›αŸ‹αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž„αŸ’αž€αžΎαž ns-3 αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž‘αžΆαŸ†αž„αž–αžΈαžš build.pyαž¬αž§αž”αž€αžšαžŽαŸ ដុត. αž§αž”αž€αžšαžŽαŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αžŸαžΆαž„ ns-3 αž“αž·αž„αžšαž€αŸ’αžŸαžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ” αžαžΆαž˜αž–αž·αžαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž„αžŸαž„αŸ‹ αž–αž½αž€αž‚αŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž§αž”αž€αžšαžŽαŸαžŸαžΆαž„αžŸαž„αŸ‹ αžœαŸ‰αžΆ αž–αžΈαžαž ns-3 αŸ” αžœαŸ‰αžΆ αžŠαŸ†αž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž€αžΌαžŠαž”αŸ’αžšαž—αž– ns-3 αŸ” αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αž—αžΆαž‚β€‹αž…αŸ’αžšαžΎαž“β€‹αž”αž“αŸ’αžβ€‹αž”αŸ’αžšαžΎ ns‑3 αž™αŸ‰αžΆαž„β€‹αžšαž αŸαžŸβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αžšαž…αž“αžΆβ€‹αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„β€‹αž€αžΆαžšβ€‹αž•αŸ’αž‚αž»αŸ†β€‹ αžœαŸ‰αžΆ. αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αž αžŸαžΌαž˜αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αžαž ns-3 αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αž”αžΌαž„αŸ”

αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„αž“αŸ…αž–αŸαž›αž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž”αž“αŸ’αžαž·αž… αž“αž·αž„αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž‚αžΊαž”αž„αŸ’αž€αžΎαžαž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž“αŸƒαž€αžΌαžŠαŸ” αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž’αŸ’αž“αž€αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αŸ†αžŽαŸ‚αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ” αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž–αž“αŸ’αž™αž›αŸ‹αžŠαž›αŸ‹ Waf αžαžΆαžœαžΆαž‚αž½αžšαžαŸ‚αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαžŠαŸ‚αž›αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž§αž‘αžΆαž αžšαžŽαŸ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

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

αž“αŸαŸ‡αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžœαŸ‰αžΆ αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžαžαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€) αŸ” αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αžŠαŸ†αž”αžΌαž„β€‹αžŸαž˜αŸ’αž’αžΆαžβ€‹αž–αžΈβ€‹αž€αžΆαžšβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž˜αž»αž“ αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αž˜αŸ’αž˜αžαžΆβ€‹αž˜αž·αž“β€‹αž…αžΆαŸ†αž”αžΆαž…αŸ‹β€‹αžαŸ’αž›αžΆαŸ†αž„β€‹αž“αŸ„αŸ‡β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αžŠαŸβ€‹αž›αŸ’αž’ (αžŸαžΌαž˜β€‹αž˜αžΎαž›β€‹αž‘αž˜αŸ’αžšαž„αŸ‹ build αžαžΆαž„αž€αŸ’αžšαŸ„αž˜β€‹αž•αž„β€‹αžŠαŸ‚αžš); αžœαžΆαž“αžΉαž„αž›αž»αž”αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž–αžΈαž˜αž»αž“ αž“αž·αž„αž―αž€αžŸαžΆαžšαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαž αž”αž„αŸ’αž€αžΎαž /. αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαžΆαž„αžŸαž„αŸ‹αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž•αŸ’αžŸαŸαž„αŸ— αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αžΉαž„αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

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 bit "αž€αŸ†αžŽαžαŸ‹αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αŸ’αžšαž»αž˜αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αžœαžΆβ€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αžΎαž€β€‹αžαžΆαž˜β€‹αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜β€‹αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž αžΎαž™β€‹αž˜αž»αžαž„αžΆαžšβ€‹αž“αŸαŸ‡β€‹αž›αŸαž…β€‹αž‘αžΎαž„β€‹αž‡αžΆ "αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž”αžΎαž€"αŸ” αž‡αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ‚αž›αž”αžΆαž“αž”αžΎαž€ αžŸαžΌαž˜αž”αŸ’αžšαžΎ αžœαŸ‰αžΆ αž‡αžΆαž˜αž½αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš --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αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αž˜αŸ’αžšαžΎαžŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αžœαŸ‰αžΆ αžœαžΆαž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αžœαžΆαž“αžΉαž„αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ–

$ ./build.py --disable-python

αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜αž“αžΉαž„αž˜αžΆαž“αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αž·αžŸαŸαžŸ - - αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž“αŸ’αžαŸ‚αž˜αžαžΆαž˜αžšαž™αŸˆ αžœαŸ‰αžΆαž αŸ’αžœαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž›αžΎ αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ–

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

αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž”αž„αŸ’αž€αžΎαžαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαŸ†αžαžΆαž“αŸ‹ ./waf αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ --disable-python. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž˜αž½αž™αž…αŸ†αž“αž½αž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž’αŸ†αž–αžΈ αžœαŸ‰αžΆ.

αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ ns-3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ C ++ αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž–αŸαž›αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž›αžΎαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž…αž‘αžΌαž‘αŸ… αž“αž·αž„ MacOS αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž™αžΌαžš αŸ— αž‘αŸ…αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžαŸ’αž˜αžΈαž αžΎαž™αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžαŸ’αž˜αžΈαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž‘αŸ†αž“αŸ„αžšαž‘αŸ…αžšαž€αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αŸ” ns-3 αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαžšαž”αžŸαŸ‹αžœαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαžαŸ‹αž‘αž»αž€αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž€αŸ†αž αž»αžŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‡αž½αž“αž€αžΆαž›αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαŸ‚αž…αžΆαžŸαŸ‹αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αž˜αžΈαž‡αžΆαž„ αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž’αžΆαž…αž”αž‰αŸ’αžˆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž–αžΈαž˜αž»αž“αž˜αžΆαž“αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ ns‑3.28 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Fedora 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 αžœαŸ‰αžΆ αž‡αž˜αŸ’αžšαžΎαžŸαž‚αžΊαž’αžΆαž…αžšαž€αž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αžœαžΆαž”αž·αž‘αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‘αž„αŸ‹ "-Werror" αž“αŸ…αž€αŸ’αž“αž»αž„ g++ αž“αž·αž„ clang++ αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸ "--disable-wrror" αž αžΎαž™αžαŸ’αžšαžΌαžœαžαŸ‚αž’αž“αž»αžœαžαŸ’αžαž€αŸ†αž‘αž»αž„αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ–

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

αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž¬αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“ αžœαŸ‰αžΆ αž˜αžΆαž“αž’αžαŸ’αžαž“αŸαž™αžαŸ‚αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž αžΎαž™αžαŸ’αž›αŸ‡αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž–αžαŸ‚αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŸαžΆαž„αžŸαž„αŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ ns-3 αž’αŸ’αž“αž€αž’αžΆαž…αž”αžΎαž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αŸŠαžΈαž αž”αŸ’αžαžΉαž„ αžŠαŸ„αž™αž”αŸ’αžšαžΎ sudoαžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎαŸ” αžœαžΆαž“αžΉαž„αž”αžŠαž·αžŸαŸαž’αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‡αŸ†αž αžΆαž“αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž§αž‘αžΆαž αžšαžŽαŸ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž•αž„αžŠαŸ‚αžšαŸ”

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

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡ αžœαŸ‰αžΆ αž“αžΉαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš sudoαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αžΎαžαžšαž“αŸ’αž’αž€αžΌαžŠαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž αž‡αžΆ rootαŸ” αž“αŸαŸ‡ αžœαŸ‰αžΆ αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž‡αŸ†αž αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžšαž»αž€αžšαž€αž‡αž˜αŸ’αžšαžΎαžŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžŸαžΌαž˜αž”αž‰αŸ’αž…αžΌαž›αŸ–

$ ./waf --help

αž“αŸ…αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ”

αž‘αž˜αŸ’αžšαž„αŸ‹αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαŸ”

αž™αžΎαž„αž”αžΆαž“αžƒαžΎαž‰αžšαž½αž…αž αžΎαž™αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžœαŸ‰αžΆ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž“αŸ’αž“αž·αž”αžΆαž αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ ΠΈ αž”αŸ’αžšαžŸαžΎαžš:

$ ./waf --build-profile=debug

αž€αŸαž˜αžΆαž“αž‘αž˜αŸ’αžšαž„αŸ‹αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αž•αž„αžŠαŸ‚αžš αž…αŸαž‰αž•αŸ’αžŸαžΆαž™. αž‡αž˜αŸ’αžšαžΎαžŸ -d αž‚αžΊαž˜αžΆαž“αž“αŸαž™αžŠαžΌαž…αž“αžΉαž„ --build-profile. αž‘αž˜αŸ’αžšαž„αŸ‹αžŸαŸ’αžαžΆαž”αž“αžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž€αžΆαžšαž’αŸ‡αž’αžΆαž„ αž“αž·αž„αž€αž»αž„αžαžΆαž€αŸ‹αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αŸ–

αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αžŽαŸ’αžαžΆαž‰ ns-3 αŸ” αž‡αŸ†αž–αžΌαž€αž‘αžΈ 3

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰ αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž“αž·αž„αž€αžΆαžšαž’αŸ‡αž’αžΆαž„αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ‚αž›αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αžœαžΎαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ’αžαž„αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αž (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αžαž·αžαž· αž¬αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš) αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŸαŸ’αžαžΆαž”αž“αžΆαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž€αžΌαžŠαžŠαŸ‚αž›αž‚αž½αžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŸαŸ’αžαžΆαž”αž“αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αžŸαžΌαž˜αž”αŸ’αžšαžΎ Code Wrapper MacroαŸ–

NS_BUILD_DEBUG (std::cout << "Part of an output line..." << std::flush; timer.Start ,!()); DoLongInvolvedComputation ();
NS_BUILD_DEBUG (timer.Stop (); std::cout << "Done: " << timer << std::endl;)

αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜, αžœαŸ‰αžΆ αž€αž“αŸ’αž›αŸ‚αž„αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαžαž›αž‘αŸ’αž’αž•αž›αž•αŸ’αžŸαŸαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‡αž˜αŸ’αžšαžΎαžŸ -β€―-outαž§αž‘αžΆαž αžšαžŽαŸ:

$ ./waf configure --out=my-build-dir

αžŠαŸ„αž™αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŸαŸ’αžαžΆαž”αž“αžΆ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžαžΌαžšαž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžšαžœαžΆαž„αž‡αž˜αŸ’αžšαžΎαžŸαž…αž„αž€αŸ’αžšαž„αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ–

$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
... 
$ ./waf configure --build-profile=optimized --out=build/optimized 
$ ./waf build
...

αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαžšαžŸαŸαžšαž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αž„αŸ’αž’αžŸαŸ‹αž‘αžΎαž„αžœαž·αž‰αžšαžΆαž›αŸ‹αž–αŸαž›αŸ” αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž”αŸ’αžαžΌαžšαž‘αŸ…αž‘αž˜αŸ’αžšαž„αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžœαŸ‰αžΆ αž“αžΉαž„αž…αž„αž€αŸ’αžšαž„αžαŸ‚αžœαžΆ αžŠαŸ„αž™αž˜αž·αž“αž…αž„αž€αŸ’αžšαž„αž‘αžΎαž„αžœαž·αž‰αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ”

αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž”αŸ’αžαžΌαžšαž‘αž˜αŸ’αžšαž„αŸ‹αžŸαžΆαž„αžŸαž„αŸ‹αžαžΆαž˜αžšαž”αŸ€αž”αž“αŸαŸ‡ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž‡αž˜αŸ’αžšαžΎαžŸαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αž‚αŸ’αž“αžΆαžšαžΆαž›αŸ‹αž–αŸαž›αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αžΉαž„αž‡αž½αž™αž’αŸ’αž“αž€αž‡αŸ€αžŸαžœαžΆαž„αž€αŸ†αž αž»αžŸαŸ–

$ export NS3CONFIG="--enable-examples --enable-tests" 
$ export NS3DEBUG="--build-profile=debug --out=build/debug"
$ export NS3OPT=="--build-profile=optimized --out=build/optimized" 

$ ./waf configure $NS3CONFIG $NS3DEBUG
$ ./waf build 
... 
$ ./waf configure $NS3CONFIG $NS3OPT
$ ./waf build

αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž‘αž„αŸ‹

αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž›αžΎ αžœαŸ‰αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž ns-3 αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ C ++ αž–αžΈ GCC ( g ++) αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ αžœαŸ‰αžΆ C++ compiler αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ CXX αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ C++ Clang, clang++,

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

αžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžœαŸ‰αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ distcc:

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

αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈ distcc αž“αž·αž„αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž…αŸ‚αž€αž…αžΆαž™αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαž‚αž˜αŸ’αžšαŸ„αž„αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž―αž€αžŸαžΆαžšαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž‘αž„αŸ‹αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž“αŸ…αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ ns-3 αžŸαžΌαž˜αž”αŸ’αžšαžΎαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ CXXFLAGS_EXTRA αŸ”

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹

αžœαŸ‰αžΆ αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžš αžŸαŸ’αžαžΆαž”αž“αžΆαž αžΎαž™αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ Waf αžŠαžΉαž„αž–αžΈαž‘αžΈαžαžΆαŸ†αž„αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“ αž“αŸ„αŸ‡αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαŸ†αž‘αžΎαž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αž“αŸ„αŸ‡αž‘αŸαŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αžΌαž›αž…αž·αžαŸ’αžαžŠαŸ†αž‘αžΎαž„αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžαž build αž“αŸ„αŸ‡αž–αž½αž€αž‚αŸαž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αžΆαž“αŸ” ./ αžœαŸ‰αžΆαž αŸ’αžœαžΆαžŠαŸ†αž‘αžΎαž„. αž”αž»αž–αŸ’αžœαž”αž‘αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž‚αžΊ / usr / αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€αžŠαžΌαž…αŸ’αž“αŸαŸ‡αŸ” ./ αžœαŸ‰αžΆαž αŸ’αžœαžΆαžŠαŸ†αž‘αžΎαž„ αž“αžΉαž„αžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž€αŸ’αž“αž»αž„ / usr / local / bin, αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„ / usr / local / lib αž“αž·αž„αž―αž€αžŸαžΆαžšαž”αž‹αž˜αž€αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ /usr/local/include. αžŸαž·αž‘αŸ’αž’αž·αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž“αŸ‹αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž”αž»αž–αŸ’αžœαž”αž‘αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž“αžΉαž„αž˜αžΆαž“ sudo ./waf αžŠαŸ†αž‘αžΎαž„. αž“αŸ…αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Waf αž“αžΉαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ†αž”αžΌαž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžŸαžΆαž„αžŸαž„αŸ‹ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžšαž€αž˜αžΎαž›αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαžΆαž˜αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž–αŸαž›αžŠαŸ†αž‘αžΎαž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžœαžΆαž‚αžΊαž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ†αž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž”αž»αž–αŸ’αžœαž”αž‘αž•αŸ’αžŸαŸαž„αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‡αž˜αŸ’αžšαžΎαžŸαž€αŸ†αž‘αž»αž„αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ --prefixαž§αž‘αžΆαž αžšαžŽαŸ:

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

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αž‰αŸ’αž…αžΌαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ†αž‘αžΎαž„ ./wafαž”αž»αž–αŸ’αžœαž”αž‘αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ /opt/local.

αž€αŸ’αžšαž»αž˜αž€αžΆαžšαž„αžΆαžš ./waf clean αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΎαž˜αž»αž“αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž˜αŸ’αžšαŸ„αž„αž‘αžΎαž„αžœαž·αž‰ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎ αžœαŸ‰αžΆ αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž”αž»αž–αŸ’αžœαž”αž‘αž•αŸ’αžŸαŸαž„αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎ ns-3 αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž αŸ…αž‘αŸαŸ” ./waf install. αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αžœαŸ‰αžΆ αž“αžΉαž„αž™αž€αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž…αŸαž‰αž–αžΈαžαžαž―αž€αžŸαžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αžΆαž…αžšαž€αžƒαžΎαž‰αžαžΆαžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžαž ns-3αŸ”

Waf αž“αŸ…αž›αžΈαžœ

αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αŸ†αž–αžΌαž›αž“αŸƒαž˜αŸ‚αž€αž’αžΆαž„αž”αŸ’αžšαž—αž– ns-3 αž˜αžΆαž“αžŸαŸ’αž‚αŸ’αžšαžΈαž” Waf αžαŸ‚αž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžš αž’αŸ’αž“αž€αž“αžΉαž„αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžš scratch/ αž¬αž€αžΆαž“αŸ‹αžαŸ‚αž‡αŸ’αžšαŸ…αž‘αŸ…αž€αŸ’αž“αž»αž„src/... αž αžΎαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αžαŸ’αžšαžΌαžœαžαŸ‚αžšαžαŸ‹ αžœαŸ‰αžΆ. αž’αŸ’αž“αž€αž’αžΆαž…αž…αžΆαŸ†αžαžΆαž’αŸ’αž“αž€αž“αŸ…αž‘αžΈαžŽαžΆ αž αžΎαž™αžšαžαŸ‹ αžœαŸ‰αžΆ αžŠαžΌαž…αžαž„αŸαŸ’αžšαž€αž˜:

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

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž‡αžΆαž€αžΆαžšαž’αž»αž‰αž‘αŸ’αžšαžΆαž“αŸ‹ αž“αž·αž„αž„αžΆαž™αž“αžΉαž„αž˜αžΆαž“αž€αŸ†αž αž»αžŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αžΆαž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž˜αž»αž“αŸ” αžœαž·αž’αžΈαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αžŠαžΌαž…αž‡αžΆ emacs ឬ αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αžœαž‚αŸ’αž‚αžŸαŸ’αžαžΆαž“αžΈαž™αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž ns-3 αž αžΎαž™αž‘αžΈαž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž€αžΌαžŠαž”αŸ’αžšαž—αž–αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“ αž”αžΆαž‘αž»αž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αž’αžΆαž…αž‡αž½αž™αŸ–

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

$ cd scratch 
$ waff build

αž€αŸ’αž“αž»αž„β€‹αžαžβ€‹αž˜αŸ‰αžΌαžŒαž»αž› αžœαžΆβ€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž…αž„αŸ‹β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž” waf αž˜αž·αž“β€‹αžŸαžΌαžœβ€‹αžŸαŸ†αžαžΆαž“αŸ‹β€‹αžŠαžΌαž…β€‹αž‡αžΆ exec ../../waf. αžŸαžΌαž˜β€‹αž€αž»αŸ†β€‹αž’αŸ’αžœαžΎβ€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡αŸ” αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž™αž›αŸ‹αž…αŸ’αžšαž‘αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž‘αžΎαž”αž“αžΉαž„αž€αžΎαž αž αžΎαž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž˜αž·αž“αž”αžΆαž“αž›αŸ’αž’ αž“αžΆαŸ†αž±αŸ’αž™αž–αž·αž”αžΆαž€αžšαž€αžƒαžΎαž‰αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αŸ” αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž„αž›αžΎαž‚αžΊαž‡αžΆαž•αŸ’αž›αžΌαžœαžŠαŸ‚αž›αž‚αž½αžšαž”αŸ’αžšαžΎαŸ”

3.5 αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž ns-3

αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆαž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ ns-3 αžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” ./test.py:

$ ./test.py

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αžšαž”αž‡αžΆαž˜αž½αž™ αžœαŸ‰αžΆ. αž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αž αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αžŸαžΆαžšαž˜αž½αž™αžŠαŸ‚αž›αž“αž·αž™αžΆαž™αžαžΆαŸ–

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

αž“αŸαŸ‡αž‡αžΆαžŸαžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΆαžšαž‚αžΆαŸ†αž„ valgrind αž‚αžΆαŸ†αž„ αž¬αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž€αžΌαžŠ αž¬αž—αžΆαž–αž˜αž·αž“αžŸαŸŠαžΈαž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž§αž”αž€αžšαžŽαŸ αž“αž·αž„αž€αžΌαžŠαŸ”

αž’αŸ’αž“αž€αž€αŸαž“αžΉαž„αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž–αžΈ αžœαŸ‰αžΆ αž“αž·αž„αž’αŸ’αž“αž€αžŸαžΆαž€αž›αŸ’αž”αž„αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž“αžΈαž˜αž½αž™αŸ— αžŠαŸ‚αž›αž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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: ... " αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžαž»αžŸαž‚αŸ’αž“αžΆ αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžšαžΏαž„αž’αž˜αŸ’αž˜αžαžΆαŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ„αŸ‡αž‚αžΊαž”αž“αŸ’αž‘αžΆαžαŸ‹αžŸαž„αŸ’αžαŸαž”αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ… αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŽαžΆαž˜αž½αž™αž”αžšαžΆαž‡αŸαž™ αž¬αž‚αžΆαŸ†αž„αž‘αŸαŸ” ) αž“αž·αž„ αžœαŸ‰αžΆαž“αž·αž„ test.py αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αžŸαŸ’αž“αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ”

3.6 αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”

αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αžœαŸ‰αžΆ. αž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαžΆαž„αžŸαž„αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαžαžΆαž•αŸ’αž›αžΌαžœαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž αžΎαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž˜αžΆαž“αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžΎ αžœαŸ‰αžΆ αž‡αžΆαž˜αž½αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš -β€―-run. αž…αžΌαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αž˜αžΌαž› ns-3 αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„ αžŸαž½αžŸαŸ’αžαžΈβ€‹αž–αž·αž—αž–αž›αŸ„αž€αžŠαŸ„αž™αžœαžΆαž™αž”αž‰αŸ’αž…αžΌαž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ ./waf --run hello-simulator

Waf αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαžŠαŸ†αž”αžΌαž„αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž αžΎαž™αžŸαžΆαž„αžŸαž„αŸ‹αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžœαŸ‰αžΆ αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

Hello Simulator

αž’αž”αž’αžšαžŸαžΆαž‘αžš! αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž‚αžΊαž‡αžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ NS-3!

αžαžΎαžαŸ’αž‰αž»αŸ†αž‚αž½αžšαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαŸ’αž‰αž»αŸ†αž˜αž·αž“αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›?

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžƒαžΎαž‰αžŸαžΆαžš αžœαŸ‰αžΆαž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž˜αž·αž“αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αž‘αŸαŸ” "αžŸαž½αžŸαŸ’αžαžΈ Simulator"αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ [Build-with-Waf] αž’αŸ’αž“αž€αž”αŸ’αžαžΌαžšαžšαž”αŸ€αž”αžŸαžΆαž„αžŸαž„αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸ… αž”αŸ’αžšαžŸαžΎαžšαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαž€αžαžΆαž“αž”αŸ’αžαžΌαžšαž‘αŸ…αžšαž”αŸ€αž”αžœαž·αž‰αŸ” αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ. αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αž»αž„αžŸαžΌαž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž˜αŸαžšαŸ€αž“αž“αŸαŸ‡αž”αŸ’αžšαžΎαžŸαž˜αžΆαžŸαž’αžΆαžαž» ns-3 αž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž“αž·αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžŸαžΆαžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž‘αŸ…αž€αžΆαž“αŸ‹αž€αž»αž„αžŸαžΌαž›αŸ” αž›αž‘αŸ’αž’αž•αž›αž–αžΈαžŸαž˜αžΆαžŸαž—αžΆαž‚αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž€αŸ’αžšαž„ - αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“ "αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžš" αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž› "Hello Simulator" αžŸαžΌαž˜αž”αž‰αŸ’αž…αžΌαž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

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

αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžœαŸ‰αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αŸ†αžŽαŸ‚αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ ns-3 αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž§αž‘αžΆαž αžšαžŽαŸ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž”αž„αŸ’αž€αžΎαžαž€αŸ†αžŽαŸ‚αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž€αžΌαžŠαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αžœαžΆαž™αž”αž‰αŸ’αž…αžΌαž›

$ ./waf

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžŸαž½αžŸαŸ’αžαžΈ-αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ”

3.6.1 αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ

αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ ns-3 αžŸαžΌαž˜αž”αŸ’αžšαžΎαž›αŸ†αž“αžΆαŸ†αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

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

αž‡αŸ†αž“αž½αžŸ αž‘αŸ…αžˆαŸ’αž˜αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αŸ” αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ -β€―-command-template αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αžœαŸ‰αžΆ αž‡αžΆαžšαžΌαž”αž˜αž“αŸ’αžαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ αžœαŸ‰αžΆ αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” 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"

3.6.2 αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ

αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ ns-3 αž€αŸ’αžšαŸ„αž˜αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαžΌαž…αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ (αž§αž‘αžΆαž αžšαžŽαŸ gdb) αž¬αž§αž”αž€αžšαžŽαŸαžŸαžΆαž€αž›αŸ’αž”αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† (αž§αž‘αžΆαž αžšαžŽαŸ αžœαŸ‰αžΆαž›αŸ‹αž αŸ’αž‚αŸ’αžšαžΈαž“) αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ -β€―-command-template = "…". αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ gdb αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ hello-simulator 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 args.) αž™αžΎαž„αž’αžΆαž…αž•αŸ’αžŸαŸ†αžšαžΌαž”αž˜αž“αŸ’αžαž“αŸαŸ‡ αž“αž·αž„αžšαžΌαž”αž˜αž“αŸ’αžαž˜αž»αž“ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ–

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

αž€αžΆαžšαžαž»αž”αžαŸ‚αž„αž“αŸαŸ‡αž“αŸƒαž€αŸ†αžŽαŸ‚αž˜αž»αž“αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžšαž€αŸ’αžŸαžΆαžαžαž€αžΆαžšαž„αžΆαžšαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž‘αŸ…αžαž αžœαŸ‰αžΆαž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŽαŸ‚αž“αžΆαŸ† αžœαŸ‰αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαžαž€αžΆαžšαž„αžΆαžšαžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžαžαž€αžΆαžšαž„αžΆαžšαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž˜αž»αž“αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž™αžΎαž„αž›αžΎαž€αž‘αžΎαž„αž–αžΈαž€αŸ’αžšαž»αž˜ -β€―-cwd αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž–αŸαž‰αž›αŸαž‰ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Waf αž–αžΈαžαžαž€αž˜αŸ’αžšαž·αžαž€αŸ†αž–αžΌαž› αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ”

αž”αž“αŸ’αžαŸ– αž‡αŸ†αž–αžΌαž€αž‘αžΈ ៀ

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹