ns-3 เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ. เชชเซเชฐเช•เชฐเชฃ 3

ns-3 เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ. เชชเซเชฐเช•เชฐเชฃ 3
เชชเซเชฐเช•เชฐเชฃ 1,2

3 เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช
3.1 เชตเชฟเชนเช‚เช—เชพเชตเชฒเซ‹เช•เชจ
3.2 เชชเซ‚เชฐเซเชตเชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹
3.2.1 เชธเซเชคเซเชฐเซ‹เชค เช†เชฐเซเช•เชพเช‡เชต เชคเชฐเซ€เช•เซ‡ ns-3 เชฐเซ€เชฒเซ€เช เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช
3.3 Git เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ ns-3 เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
3.3.1 เชฌเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ ns-3 เชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
3.4 เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชเชจเชเชธ-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 เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚ เชจ เชนเซ‹เชฏ. เชคเซ‡ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ, เชชเซ‚เชฐเซเชตเชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹, เชเชจเชเชธ-3 เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‡เชณเชตเชตเซเช‚, เชเชจเชเชธ-3 เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚ เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เชฌเชฟเชฒเซเชก เช…เชจเซ‡ เชธเชฐเชณ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเช•เชพเชธเชตเซเช‚ เชคเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡ เช›เซ‡.

3.1 เชตเชฟเชนเช‚เช—เชพเชตเชฒเซ‹เช•เชจ

ns-3 เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชธเชนเชฏเซ‹เช—เซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซ€ เชธเชฟเชธเซเชŸเชฎ เชคเชฐเซ€เช•เซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเซ‹ เช•เซ‹เชก เช† เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡. C++ เช…เชฅเชตเชพ Python เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชธเซเชŸเชฎ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡.

Ns-3 เช เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชคเชฐเซ€เช•เซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชฒเช•เซเชทเซเชฏ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชธเซŒเชชเซเชฐเชฅเชฎ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชชเช›เซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชตเชพเชคเชพเชตเชฐเชฃ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, ns-3 เชšเซ‹เช•เซเช•เชธ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชคเซ‡เช“ เช† เชฐเซ€เชคเซ‡ เชตเชฟเชคเชฐเชฟเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช†เชœเช•เชพเชฒ เช˜เชฃเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช–เชฐเซ‡เช–เชฐ ns-3 เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชฎเชจเซเช‚ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชฐเซ‹เชค เช•เซ‹เชก เชนเซ‹เชตเซ‹ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡. เชœเซ‹ เช•เซ‹เชˆ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เช…เชจเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เช‡เชฒเชฟเช‚เช— เชฒเชฟเชธเซเชŸเชจเซ‹ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ‹. เชเชจเชเชธ-เชกเซ‡เชตเชฒเชชเชฐเซเชธ.

เช†เช—เชณ, เช…เชฎเซ‡ ns-3 เชกเชพเช‰เชจเชฒเซ‹เชก เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เช•เชฐเชตเชพเชจเซ€ เชคเซเชฐเชฃ เชฐเซ€เชคเซ‹ เชœเซ‹เชˆเชถเซเช‚. เชชเซเชฐเชฅเชฎ เชฎเซเช–เซเชฏ เชธเชพเช‡เชŸ เชชเชฐเชฅเซ€ เชธเชคเซเชคเชพเชตเชพเชฐ เชชเซเชฐเช•เชพเชถเชจ เชกเชพเช‰เชจเชฒเซ‹เชก เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชฌเซ€เชœเซเช‚ เชฎเซ‚เชณเชญเซ‚เชค ns-3 เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเชพ เชตเชฟเช•เชพเชธ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชจเช•เชฒเซ‹เชจเซ€ เชชเชธเช‚เชฆเช—เซ€ เช…เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช›เซ‡. เชคเซเชฐเซ€เชœเซเช‚ ns-3 เชฎเชพเชŸเซ‡ เชตเชงเซ เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจ เชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชฌเชฟเชฒเซเชก เชŸเซ‚เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡. เช…เชฎเซ‡ เชฆเชฐเซ‡เช•เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชˆเชถเซเช‚ เช•เชพเชฐเชฃ เช•เซ‡ เชธเชพเชงเชจเซ‹ เชฅเซ‹เชกเชพ เช…เชฒเช— เช›เซ‡.

เช…เชจเซเชญเชตเซ€ Linux เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช†เชถเซเชšเชฐเซเชฏ เชชเชพเชฎเชถเซ‡ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ ns-3 เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เช…เชจเซเชฏ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ€ เชœเซ‡เชฎ เชชเซ‡เช•เซ‡เชœ เชคเชฐเซ€เช•เซ‡ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชจเชฅเซ€? เชตเชฟเชตเชฟเชง เชฒเชฟเชจเช•เซเชธ เชตเชฟเชคเชฐเชฃเซ‹ (เชฆเชพ.เชค. เชกเซ‡เชฌเชฟเชฏเชจ) เชฎเชพเชŸเซ‡ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชชเซ‡เช•เซ‡เชœเซ‹ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซ‹เชคเชพเชจเซ‡ ns-3 เชชเซเชจเชƒเชฌเซ€เชฒเซเชก เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชธเซเชฐเซ‹เชค เช•เซ‹เชก เช‰เชชเชฒเชฌเซเชง เช•เชฐเชพเชตเชตเซ‹ เชธเชฐเชณ เช›เซ‡. เช† เช•เชพเชฐเชฃเซ‹เชธเชฐ, เช…เชฎเซ‡ เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚.

เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เช…เชฐเชœเซ€เช“ เชฎเชพเชŸเซ‡ ns-3 เช…เชงเชฟเช•เชพเชฐเซ‹ เชฐเซเชŸ เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เช…เชจเชชเซเชฐเซ€เชตเชฒเซ‡เชœเซเชก เชฏเซเชเชฐ เชเช•เชพเช‰เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

3.2 เชชเซ‚เชฐเซเชตเชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹

เช‰เชชเชฒเชฌเซเชง ns-3 เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“เชจเชพ เชธเชฎเช—เซเชฐ เชธเซ‡เชŸเชฎเชพเช‚ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชชเชฐ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เช…เชตเชฒเช‚เชฌเชจ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชญเชพเช— เชฎเชพเชŸเซ‡ ns-3 เช•เซ‡เชŸเชฒเชพเช• เชธเชพเชฎเชพเชจเซเชฏ (เช˜เชฃเซ€ เชตเช–เชค เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเชพ) เช˜เชŸเช•เซ‹เชจเชพ เชธเชฎเชฐเซเชฅเชจ เชธเชพเชฅเซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเชˆ เชถเช•เชพเชฏ เช›เซ‡: เชเช• C++ เช•เชฎเซเชชเชพเชˆเชฒเชฐ, เชชเชพเชฏเชฅเซ‹เชจ, เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก เชธเช‚เชชเชพเชฆเช• (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชตเชฟเชฎ, emacs เช…เชฅเชตเชพ เช—เซเชฐเชนเชฃ) เช…เชจเซ‡, เชœเซ‹ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ Git เชตเชฐเซเชเชจ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชชเซเชฐเชฅเชฎ-เชตเช–เชคเชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชšเชฟเช‚เชคเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เชœเซ‹ เชคเซ‡เชฎเชจเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• ns-3 เช…เชฆเซเชฏเชคเชจ เชธเซเชตเชฟเชงเชพเช“ เช–เซ‚เชŸเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‡เช“ เชธเช‚เชชเซ‚เชฐเซเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช‡เชšเซเช›เชคเชพ เชนเซ‹เชฏ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชเช• เชตเชฟเช•เชฟ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช˜เชฃเซ€ เชฌเชงเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชŸเซ€เชชเซเชธ เช…เชจเซ‡ เชฏเซเช•เซเชคเชฟเช“เชตเชพเชณเชพ เชชเซƒเชทเซเช เซ‹ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เชเชตเซเช‚ เชเช• เชชเชพเชจเซเช‚ เชธเซเชฅเชพเชชเชจ เชชเซƒเชทเซเช  เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเชฟเชธเซเชŸเชฎเซ‹ เชฎเชพเชŸเซ‡ เชธเซเชฅเชพเชชเชจ เชธเซ‚เชšเชจเชพเช“ เช‰เชชเชฒเชฌเซเชง เช›เซ‡, เช…เชนเซ€เช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡: https://www.nsnam.org/wiki/Installation.

เช† เชตเชฟเช•เชฟเชจเซ‹ เชชเซ‚เชฐเซเชตเชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹ เชตเชฟเชญเชพเช— เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชธเชพเชฎเชพเชจเซเชฏ ns-3 เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฏเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพ เช›เซ‡ เช…เชจเซ‡ Linux เช…เชฅเชตเชพ macOS เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชซเซเชฒเซ‡เชตเชฐ เชชเชฐ เชคเซ‡เชฎเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เช†เชฆเซ‡เชถเซ‹ เชชเชฃ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เชคเชฎเซ‡ ns-3 เชตเชฟเช•เชฟ เชชเซ‡เชœ เช…เชฅเชตเชพ เชฎเซเช–เซเชฏ เชตเซ‡เชฌเชธเชพเชˆเชŸเชจเซเช‚ เช…เชจเซเชตเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เชคเช•เชจเซ‹ เชฒเชพเชญ เชฒเชˆ เชถเช•เซ‹ เช›เซ‹: https://www.nsnam.org, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซเชฏเชพเช‚ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡. ns-3 (ns-3.29) เชจเชพ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡, ns-3 เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชธเชพเชงเชจเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

เชŸเซ‚เชฒ เชชเซ‡เช•เซ‡เชœ/เชธเช‚เชธเซเช•เชฐเชฃ

  • C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐ
    clang++ เช…เชฅเชตเชพ g++ (g++ เชธเช‚เชธเซเช•เชฐเชฃ 4.9 เช…เชฅเชตเชพ เช‰เชšเซเชš)
  • เชชเชพเชฏเชฅเซ‹เชจ
    python2 เชตเชฐเซเชเชจ >= 2.7.10, เช…เชฅเชตเชพ python3 เชตเชฐเซเชเชจ >=3.4
  • เช—เชฟเชŸ
    เช•เซ‹เชˆเชชเชฃ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ (GitLab.com เชชเชฐ ns-3 เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡)
  • เชŸเชพเชฐ
    เช•เซ‹เชˆเชชเชฃ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ (NS-3 เชฐเซ€เชฒเซ€เชเชจเซ‡ เช…เชจเชชเซ‡เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡)
  • เชฌเชจเชเชฟเชช2
    เช•เซ‹เชˆเชชเชฃ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ (NS-3 เชฐเซ€เชฒเซ€เชเชจเซ‡ เช…เชจเชชเซ‡เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡)

เชชเชพเชฏเชฅเซ‹เชจเชจเซเช‚ เชกเชฟเชซเซ‰เชฒเซเชŸ เชธเช‚เชธเซเช•เชฐเชฃ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เชŸเชพเช‡เชช เช•เชฐเซ‹ python -V. g++ เชธเช‚เชธเซเช•เชฐเชฃ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เชŸเชพเช‡เชช เช•เชฐเซ‹ g++ -v. เชœเซ‹ เช•เซ‹เชˆ เชŸเซ‚เชฒเซเชธ เช–เซ‚เชŸเซ‡ เช›เซ‡ เช…เชฅเชตเชพ เช–เซ‚เชฌ เชœเซ‚เชจเชพ เช›เซ‡, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ ns-3 เชตเชฟเช•เชฟ เชชเซƒเชทเซเช  เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฒเซ‹.

เชนเชตเซ‡เชฅเซ€, เช…เชฎเซ‡ เชงเชพเชฐเซ€เช เช›เซ€เช เช•เซ‡ เชฐเซ€เชกเชฐ Linux, MacOS เช…เชฅเชตเชพ Linux เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡, เช…เชจเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เช‰เชชเชฐเซ‹เช•เซเชค เชธเชพเชงเชจเซ‹ เชงเชฐเชพเชตเซ‡ เช›เซ‡.

3.2.1 เชธเซเชคเซเชฐเซ‹เชค เช†เชฐเซเช•เชพเช‡เชต เชคเชฐเซ€เช•เซ‡ ns-3 เชฐเซ€เชฒเซ€เช เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

ns-3 เชจเชพ เชจเชตเซ€เชจเชคเชฎ เชชเซเชฐเช•เชพเชถเชจ เช…เชจเซ‡ เชชเซ‡เช•เซ‡เชœ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเชตเชพ เช‡เชšเซเช›เชคเชพ เชจเชตเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เช† เช•เซเชฐเชฟเชฏเชพเชจเซ‹ เชฎเชพเชฐเซเช— เช›เซ‡. ns-3 เชชเซเชฐเช•เชพเชถเชจเซ‹ เชธเช‚เช•เซเชšเชฟเชค เชธเซเชคเซเชฐเซ‹เชค เช†เชฐเซเช•เชพเช‡เชตเซเชธ เชคเชฐเซ€เช•เซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชœเซ‡เชจเซ‡ เช•เซเชฏเชพเชฐเซ‡เช• เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชŸเชพเชฐเชฌเซ‹เชฒ. เชŸเชพเชฐเชฌเซ‹เชฒ เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช†เชฐเซเช•เชพเช‡เชต เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช˜เชฃเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เชฐเซเช•เชพเช‡เชต เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเช‚เช•เซเชšเชฟเชค เชนเซ‹เชฏ เช›เซ‡. เชฎเชพเชฐเชซเชคเซ‡ ns-3 เชฌเซเชŸ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชŸเชพเชฐเชฌเซ‹เชฒ เชธเชฐเชณ เช›เซ‡, เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชฐเชฟเชฒเซ€เช เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซ€, เชคเซ‡เชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช…เชจเชชเซ…เช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชšเชพเชฒเซ‹ เชฎเชพเชจเซ€ เชฒเชˆเช เช•เซ‡ เชคเชฎเซ‡, เชเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡, เชจเชพเชฎเชจเซ€ เชธเซเชฅเชพเชจเชฟเช• เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ ns-3 เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹ เช•เชพเชฐเซเชฏเชธเซเชฅเชณ. เชคเชฎเซ‡ Linux เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพ เชฆเชพเช–เชฒ เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเช•เชพเชถเชจเชจเซ€ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเช•เชฒ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ (เช…เชฒเชฌเชคเซเชค, เชฏเซ‹เช—เซเชฏ เชธเช‚เชธเซเช•เชฐเชฃ เชจเช‚เชฌเชฐเซ‹เชจเซ‡ เชฌเชฆเชฒเซ€เชจเซ‡)

$ 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 เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชตเชฟเชตเชฟเชง เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชฒเชพเชตเซ‡ เช›เซ‡.

เช—เชฟเชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ เช เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ‡ เชซเซ‹เชฐเซเช• เช…เชฅเชตเชพ เช•เซเชฒเซ‹เชจ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ ns-3-เชเชฒเซ€เชจเซ‹เชจ. เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹เชจเซ‹ เชธเชฎเซ‚เชน เช›เซ‡ เชœเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ 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-เชเชฒเซ€เชจเซ‹เชจ เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชชเซเชฐเช•เชพเชถเชจ เช†เชฐเซเช•เชพเช‡เชต เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฅเซ€ เชฅเซ‹เชกเซเช‚ เช…เชฒเช—. เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชฆเซ‡เช–เชพเชตเซเช‚ เชœเซ‹เชˆเช:

$ 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-เชเชฒเซ€เชจเซ‹เชจ เชตเชงเชพเชฐเชพเชจเชพ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ ns-3, เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚, pybindgen ะธ netanim.

เชจเซ‹เช‚เชงเชฃเซ€
เชธเซเชตเชšเซเช› Ubuntu16.04 เชธเชพเชฅเซ‡เชจเชพ เชฎเชถเซ€เชจ เชชเชฐ, เชฎเชพเชฐเซ‡ เช†เชฎเชพเช‚ เช†เชฆเซ‡เชถ เชฌเชฆเชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: $ sudo python3 download.py -n ns-3.29 (เชคเซเชฏเชพเชฐเชฌเชพเชฆ เช…เชจเซเชตเชพเชฆเช•เชจเซ€ เชจเซ‹เช‚เชงเซ‹).

3.3.1 เชฌเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ ns-3 เชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช‰เชชเชฐเซ‹เช•เซเชค เชฌเซ‡ เชชเชฆเซเชงเชคเชฟเช“ (เชธเซเชฐเซ‹เชค เช†เชฐเซเช•เชพเช‡เชต เช…เชฅเชตเชพ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ ns-3-เชเชฒเซ€เชจเซ‹เชจ Git เชฆเซเชตเชพเชฐเชพ) เชฌเชนเซเชตเชฟเชง เชเชกเช“เชจเซเชธ เชธเชพเชฅเซ‡ เชธเชฐเชณ ns-3 เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡(pybindgen เชชเชพเชฏเชฅเซ‹เชจ เชฌเชพเชˆเชจเซเชกเซ€เช‚เช— เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เช…เชจเซ‡ netanim เชจเซ‡เชŸเชตเชฐเซเช• เชเชจเชฟเชฎเซ‡เชถเชจ เชฎเชพเชŸเซ‡). ns-3-allinone เชฎเชพเช‚ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชคเซเชฐเซ€เชœเซ€ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡ เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚.

เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚ ns-3 เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชฟเชค, เชฌเชนเซเชตเชฟเชง เชญเช‚เชกเชพเชฐเชฎเชพเช‚เชฅเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐเชจเชพ เชธเช‚เช•เชฒเชฟเชค เชจเชฟเชฐเซเชฎเชพเชฃ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡. เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚ ns-3 เชจเซ€ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เช†เชตเซƒเชคเซเชคเชฟเช“ เชฎเซ‡เชณเชตเชตเชพ เชคเซ‡เชฎเชœ ns-3 เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชถเชจเชจเชพ เชฌเซ‡เช เชตเชฐเซเชเชจเชจเชพ เชเช•เซเชธเชŸเซ‡เชจเซเชถเชจเชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเชชเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ, CradleNetwork เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชถเชจ เชชเชพเชฐเชฃเซเช‚, เชจเชตเชพ เชชเชพเชฏเชฅเซ‹เชจ เชฌเชพเชˆเชจเซเชกเชฟเช‚เช—เซเชธ เช…เชจเซ‡ เชตเชฟเชตเชฟเชง ns-3 โ€œเชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹โ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ.

เชจเซ‹เช‚เชงเชฃเซ€
CradleNetwork Simulation Cradle เช เชเช• เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชตเชพเชธเซเชคเชตเชฟเช• TCP/IP เชจเซ‡เชŸเชตเชฐเซเช• เชธเซเชŸเซ‡เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ ns-3 เชธเซเชฅเชพเชชเชจเชฎเชพเช‚ เช…เชฆเซเชฏเชคเชจ เช…เชฅเชตเชพ เชตเชงเชพเชฐเชพเชจเชพ เชฒเช•เซเชทเชฃเซ‹เชจเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เช† เชธเซเชฅเชพเชชเชจ เชชเชพเชฅเชจเซ‡ เช…เชจเซเชธเชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชจเชตเซ€เชจเชคเชฎ ns-3 เชชเซเชฐเช•เชพเชถเชจเซ‹เชฎเชพเช‚ เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚ เชŸเชพเชฐ เชฐเชฟเชฒเซ€เชเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชชเซเชฐเช•เชพเชถเชจเชฎเชพเช‚ เชเช• เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชชเซเชฐเช•เชพเชถเชจเชจเชพ เชธเชฎเชฏเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชคเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเช‚เชธเซเช•เชฐเชฃ เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚, เชœเซ‡ เชชเซเชฐเช•เชพเชถเชจ ns-3.29 เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— ns-3 เช…เชฅเชตเชพ เชคเซ‡เชจเชพ เชชเชนเซ‡เชฒเชพเชจเชพ เชชเซเชฐเช•เชพเชถเชจ เชฎเชพเชŸเซ‡ เช˜เชŸเช•เซ‹ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเช›เซ€เชจเชพ เชชเซเชฐเช•เชพเชถเชจเซ‹ เชฎเชพเชŸเซ‡ เช˜เชŸเช•เซ‹ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชคเซ‹ เชจเชฅเซ€ (เชœเซ‹ เชชเซ‡เช•เซ‡เชœ เชตเชฐเซเชฃเชจ เชซเชพเช‡เชฒ bakeconf.xml เช…เชชเชกเซ‡เชŸ เชจเชฅเซ€).

เชคเชฎเซ‡ เชจเชตเซ€เชจเชคเชฎ เชจเช•เชฒ เชชเชฃ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚เชคเชฎเชพเชฐเชพ Linux เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชฆเชพเช–เชฒ เช•เชฐเซ€เชจเซ‡ (เชงเชพเชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เช•เซ‡ เชคเชฎเซ‡ 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-เชเชฒเซ€เชจเซ‹เชจ: เชฎเซ‹เชกเซเชฏเซเชฒเชจเชพ เชชเซเชฐเช•เชพเชถเชจ เชธเช‚เชธเซเช•เชฐเชฃ เชœเซ‡เชตเซเช‚ เชœ เชเช• เชฎเชพ เชฌเชงเซ, เชชเชฐเช‚เชคเซ เชตเชฟเช•เชพเชธ เช•เซ‹เชก เชฎเชพเชŸเซ‡.

เชจเซ‹เช‚เชงเชฃเซ€
เช•เซเชฒเชฟเช• เช•เชฐเซ‹ โ€” เชฐเชพเช‰เชŸเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชฐ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ.

เช“เชชเชจเชซเซเชฒเซ‹ เช เชฐเชพเช‰เชŸเชฐเซเชธ เช…เชจเซ‡ เชธเซเชตเชฟเชš เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เชชเซเชฐเชธเชพเชฐเชฟเชค เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช›เซ‡, เชœเซ‡ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ-เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชจเซ‡เชŸเชตเชฐเซเช• เชคเช•เชจเซ€เช•เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡.

เชตเชฐเซเชคเชฎเชพเชจ เชตเชฟเช•เชพเชธ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ (เชฌเชฟเชจ-เชชเซเชฐเช•เชพเชถเชจ) 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 ...

เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เช…เชชเชฒเซ‹เชก เชŸเซ‚เชฒเซเชธ เชœเซ‡เชฎ เช•เซ‡ เชฎเชฐเซเช•เซเชฏเซเชฐเชฟเชฏเชฒ, เชธเซ€เชตเซ€เชเชธ, เช—เชฟเชŸ เช…เชจเซ‡ เชฌเชœเชพเชฐ เช† เชชเช—เชฒเชพเชฎเชพเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช…เชฎเชจเซ‡ เช•เซ‹เชก เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช† เชฌเชฟเช‚เชฆเซเช, เชคเชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เช—เซเชฎ เชฅเชฏเซ‡เชฒ เชธเชพเชงเชจเซ‹เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ (เชœเซ‹ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡) เช…เชฅเชตเชพ เชฎเชฆเชฆ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเชจเซ‹ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ‹.

เช†เช—เชณ, เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹:

$ ./bake.py download

เชชเชฐเชฟเชฃเชพเชฎ เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช:

>> Searching for system dependency setuptools - OK 
>> Searching for system dependency libgoocanvas2 - OK 
>> Searching for system dependency gi-cairo - OK 
>> Searching for system dependency pygobject - OK 
>> Searching for system dependency pygraphviz - OK 
>> Searching for system dependency python-dev - OK 
>> Searching for system dependency qt - OK 
>> Searching for system dependency g++ - OK 
>> Downloading pybindgen-0.19.0.post4+ng823d8b2 (target directory:pybindgen) - OK 
>> Downloading netanim-3.108 - OK 
>> Downloading ns-3.29 - OK

เช†เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชถเซ‡ เช•เซ‡ เชคเซเชฐเชฃ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชนเชตเซ‡ เชธเซเชคเซเชฐเซ‹เชค เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเชฐ เชœเชพเช“ เช…เชจเซ‡ ls เชฒเช–เซ‹; เชคเชฎเชพเชฐเซ‡ เชœเซ‹เชตเซเช‚ เชœเซ‹เชˆเช:

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

เชนเชตเซ‡ เชคเชฎเซ‡ ns-3 เชตเชฟเชคเชฐเชฃ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‹.

3.4 เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชเชจเชเชธ-3

เชเชจเชเชธ-3 เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชœเซ‡เชฎ, เชเชจเชเชธ-3 เชฌเชจเชพเชตเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡. เช…เชฎเซ‡ เชœเซ‡ เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เชคเซ‡ เช เช›เซ‡ เช•เซ‡ ns-3 เชจเชพเชฎเชจเชพ เชฌเชฟเชฒเซเชก เชŸเซ‚เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชตเชพเชซเชจเซ€เชšเซ‡ เชตเชฐเซเชฃเชตเซ‡เชฒ. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡ เชตเชพเชซ, เชชเชฐเช‚เชคเซ เชคเชฎเชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชฎเชพเช‚ เช…เชฅเชตเชพ เชตเชงเซ เชœเชŸเชฟเชฒ เชฌเชฟเชฒเซเชกเซเชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชธเชฐเชณ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช›เซ‡. เชคเซ‡เชฅเซ€ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชพเช‚เชšเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เชตเชพเชซ, เชเช• เชจเชœเชฐ เชจเชพเช–เซ‹ build.py เช…เชจเซ‡ เชธเชพเชฅเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช—เชฐเชฎเซ€เชฅเซ€ เชชเช•เชตเชตเซเช‚.

3.4.1 build.py เชธเชพเชฅเซ‡ เชฌเชฟเชฒเซเชกเซ€เช‚เช—

เชธเชพเชตเชงเชพเชจ เช† เชฌเชฟเชฒเซเชก เชธเซเชŸเซ‡เชช เชซเช•เซเชค เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซเชฏเชพ เชฎเซเชœเชฌ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‡เชฒ เชธเซเชคเซเชฐเซ‹เชค เช†เชฐเซเช•เชพเช‡เชต เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚เชฅเซ€ เช‰เชชเชฒเชฌเซเชง เช›เซ‡; เช…เชจเซ‡ เช—เชฟเชŸ เช…เชฅเชตเชพ เชฌเซ‡เช• เชฆเซเชตเชพเชฐเชพ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เชจเชฅเซ€.

เชชเซเชฐเช•เชพเชถเชจ เช†เชฐเซเช•เชพเช‡เชต เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชŸเชพเชฐเชฌเซ‹เชฒเชฎเชพเช‚ ns-3-เชเชฒเซ€เชจเซ‹เชจ เชคเซเชฏเชพเช‚ เชเช• เชธเชฐเชณ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡ เชœเซ‡ เช˜เชŸเช•เซ‹เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชจเซ‡ 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 เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ€ เชœเชพเชณเชตเชฃเซ€ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡. เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชฌเชฟเชฒเซเชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“ เชฌเชฟเชฒเซเชก เชŸเซ‚เชฒ เชšเชฒเชพเชตเซ‡ เช›เซ‡ เชตเชพเชซ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ ns-3 เชฎเชพเช‚เชฅเซ€. เชตเชพเชซ ns-3 เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ€เชงเชพ เชœ nsโ€‘3 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเชกเชชเชฅเซ€ เช†เช—เชณ เชตเชงเซ‡ เช›เซ‡ เชตเชพเชซ. เชคเซ‡เชฅเซ€, เชšเชพเชฒเซ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡, เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชคเชฎเซ‡ เชฎเซ‚เชณ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ‡เชฒเซ€ ns-3 เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเชฐ เชœเชพเช“.

เช† เชธเชฎเชฏเซ‡ เช†เชจเซ€ เชธเช–เชค เช†เชตเชถเซเชฏเช•เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฅเซ‹เชกเซเช‚ เชฌเซ‡เช•เชŸเซเชฐเซ‡เช• เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช—เซ‹เช เชตเชฃเซ€เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡. เชธเช‚เชญเชตเชคเชƒ เชธเซŒเชฅเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเซ‡เชฐเชซเชพเชฐ เชคเชฎเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชคเซ‡ เช•เซ‹เชกเชจเซเช‚ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชธเช‚เชธเซเช•เชฐเชฃ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡. เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชกเซ€เชฌเช— เชธเช‚เชธเซเช•เชฐเชฃ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡. เชšเชพเชฒเซ‹ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชฌเชฟเชฒเซเชก เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช. Waf เชจเซ‡ เชธเชฎเชœเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡ เชคเซ‡เชฃเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชฌเชฟเชฒเซเชกเซเชธ เชฌเชจเชพเชตเชตเซ€ เชœเซ‹เชˆเช เชœเซ‡เชฎเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ, เชคเชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡:

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

เช† เชฒเซ‹เชจเซเชš เช•เชฐเชถเซ‡ เชตเชพเชซ เชธเซเชฅเชพเชจเชฟเช• เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ€ เชฌเชนเชพเชฐ (เชคเชฎเชพเชฐเซ€ เชธเซเชตเชฟเชงเชพ เชฎเชพเชŸเซ‡). เชชเซเชฐเชฅเชฎ เช†เชฆเซ‡เชถ เช…เช—เชพเช‰เชจเชพ เชฌเชฟเชฒเซเชกเชฎเชพเช‚เชฅเซ€ เชธเชพเชซ เช•เชฐเซ‡ เช›เซ‡, เช† เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเช–เชค เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชธเชพเชฐเซ€ เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เช›เซ‡ (เชจเซ€เชšเซ‡ เชฌเชฟเชฒเซเชก เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชชเชฃ เชœเซเช“); เช† เช…เช—เชพเช‰ เชฌเชจเชพเชตเซ‡เชฒ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช…เชจเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชฟเชค เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชถเซ‡ เชฌเชฟเชฒเซเชก/. เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเซเชจเชƒเชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เชธเชฟเชธเซเชŸเชฎ เชตเชฟเชตเชฟเชง เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชœเซ‡เชตเซเช‚ เช†เช‰เชŸเชชเซเชŸ เชœเซ‹เชตเซเช‚ เชœเซ‹เชˆเช:

Setting top to      : /home/ns3user/workspace/bake/source/ns-3-dev
Setting out to      : /home/ns3user/workspace/bake/source/ns-3-dev/build
Checking for 'gcc' (C compiler)        : /usr/bin/gcc 
Checking for cc version                : 7.3.0 
Checking for 'g++' (C++ compiler)      : /usr/bin/g++ 
Checking for compilation flag -march=native support : ok 
Checking for compilation flag -Wl,--soname=foo support : ok 
Checking for compilation flag -std=c++11 support       : ok 
Checking boost includes   : headers not found, please ,!provide a --boost-includes argument (see help) 
Checking boost includes   : headers not found, please ,!provide a --boost-includes argument (see help) 
Checking for program 'python'            : /usr/bin/python 
Checking for python version >= 2.3       : 2.7.15 python-config                                                                     : /usr/bin/python-config
Asking python-config for pyembed '--cflags --libs --ldflags' flags : yes
Testing pyembed configuration                                      : yes
Asking python-config for pyext '--cflags --libs --ldflags' flags   : yes
Testing pyext configuration                                        : yes

Checking for compilation flag -fvisibility=hidden support          : ok 
Checking for compilation flag -Wno-array-bounds support            : ok 
Checking for pybindgen location          : ../pybindgen ,!(guessed) 
Checking for python module 'pybindgen'   : 0.19.0. ,!post4+g823d8b2 
Checking for pybindgen version           : 0.19.0. ,!post4+g823d8b2 
Checking for code snippet                : yes 
Checking for types uint64_t and unsigned long equivalence : no 
Checking for code snippet                                 : no 
Checking for types uint64_t and unsigned long long equivalence     : yes 
Checking for the apidefs that can be used for Python bindings                       : gcc-LP64 
Checking for internal GCC cxxabi         : complete 
Checking for python module 'pygccxml'    : not found 
Checking for click location              : not found 
Checking for program 'pkg-config'        : /usr/bin/pkg- ,!config 
Checking for 'gtk+-3.0'                  : not found 
Checking for 'libxml-2.0'                : yes 
checking for uint128_t                   : not found 
checking for __uint128_t                 : yes 
Checking high precision implementation   : 128-bit integer ,!(default) 
Checking for header stdint.h             : yes 
Checking for header inttypes.h           : yes 
Checking for header sys/inttypes.h       : not found 
Checking for header sys/types.h          : yes 
Checking for header sys/stat.h           : yes 
Checking for header dirent.h             : yes 
Checking for header stdlib.h             : yes 
Checking for header signal.h             : yes 
Checking for header pthread.h            : yes 
Checking for header stdint.h             : yes 
Checking for header inttypes.h           : yes 
Checking for header sys/inttypes.h       : not found
Checking for library rt                  : yes 
Checking for header sys/ioctl.h          : yes 
Checking for header net/if.h             : yes 
Checking for header net/ethernet.h       : yes 
Checking for header linux/if_tun.h       : yes 
Checking for header netpacket/packet.h   : yes 
Checking for NSC location                : not found 
Checking for 'sqlite3'                   : not found 
Checking for header linux/if_tun.h       : yes 
Checking for python module 'gi'          : 3.26.1 
Checking for python module 'gi.repository.GObject'      : ok 
Checking for python module 'cairo'                      : ok 
Checking for python module 'pygraphviz'                 : 1.4rc1 
Checking for python module 'gi.repository.Gtk'          : ok 
Checking for python module 'gi.repository.Gdk'          : ok 
Checking for python module 'gi.repository.Pango'        : ok 
Checking for python module 'gi.repository.GooCanvas'    : ok 
Checking for program 'sudo'                             : /usr/bin/sudo 
Checking for program 'valgrind'                         : not found 
Checking for 'gsl' : not found python-config            : not found 
Checking for compilation flag -fstrict-aliasing support : ok 
Checking for compilation flag -fstrict-aliasing support : ok 
Checking for compilation flag -Wstrict-aliasing support : ok 
Checking for compilation flag -Wstrict-aliasing support : ok 
Checking for program 'doxygen'                          : /usr/bin/doxygen
---- Summary of optional ns-3 features:
Build profile : optimized
Build directory : 
BRITE Integration : not enabled (BRITE not enabled (see option --with- ,!brite)) 
DES Metrics event collection : not enabled (defaults to disabled) 
Emulation FdNetDevice        : enabled 
Examples                     : enabled 
File descriptor NetDevice    : enabled 
GNU Scientific Library (GSL) : not enabled (GSL not found) 
Gcrypt library               : not enabled
(libgcrypt not found: you can use ,!libgcrypt-config to find its location.) GtkConfigStore               : not enabled (library 'gtk+-3.0 >= 3.0' not fou   nd)
MPI Support                  : not enabled (option --enable-mpi not selected)
ns-3 Click Integration       : not enabled (nsclick not enabled (see option --with- ,!nsclick))
ns-3 OpenFlow Integration   : not enabled (Required boost libraries not found) 
Network Simulation Cradle    : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected ,!(see option --force-planetlab)) PyViz visualizer : enabled 
Python API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
Python Bindings : enabled 
Real Time Simulator           : enabled 
SQlite stats data output      : not enabled (library 'sqlite3' not found)
Tap Bridge                    : enabled 
Tap FdNetDevice               : enabled
Tests                         : enabled 
Threading Primitives          : enabled 
Use sudo to set suid bit   : not enabled (option --enable-sudo not selected)
XmlIo                         : enabled
'configure' finished successfully (6.387s)

เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เชธเซ‚เชšเชฟเชจเชพ เช›เซ‡เชฒเซเชฒเชพ เชญเชพเช—เชจเซ€ เชจเซ‹เช‚เชง เชฒเซ‹. เช•เซ‡เชŸเชฒเชพเช• ns-3 เชตเชฟเช•เชฒเซเชชเซ‹ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชธเช•เซเชทเชฎ เชจเชฅเซ€ เช…เชฅเชตเชพ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎ เชธเชชเซ‹เชฐเซเชŸเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, XmlTo เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชนเชพเชœเชฐ เชนเซ‹เชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡ libxml-2.0. เชœเซ‹ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชจ เชฎเชณเซ€ เชนเซ‹เชฏ เช…เชจเซ‡ เช…เชจเซเชฐเซ‚เชช ns-3 เชซเช‚เช•เซเชถเชจ เชธเช•เซเชทเชฎ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชเช• เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ‡. เช เชชเชฃ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡ sudo เชšเซ‹เช•เซเช•เชธ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เชฎเชพเชŸเซ‡ suid เชฌเซ€เชŸ "เชฐเชจเชŸเชพเช‡เชฎ เชชเชฐ เชธเชฎเซ‚เชน ID เชธเซ‡เชŸ เช•เชฐเซ‹" เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชคเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เชธเช•เซเชทเชฎ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เช† เชธเซเชตเชฟเชงเชพ "เชธเช•เซเชทเชฎ เชจเชฅเซ€" เชคเชฐเซ€เช•เซ‡ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เช›เซ‡เชฒเซเชฒเซ‡, เชธเช•เซเชทเชฎ เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เชตเชพเชซ เชชเชฐเชฟเชฎเชพเชฃ เชธเชพเชฅเซ‡ --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

เชœเซ‹ เช•เซ‡, เชตเชฟเชถเซ‡เชท เช“เชชเชฐเซ‡เชŸเชฐ - - เชฆเซเชตเชพเชฐเชพ เชตเชงเชพเชฐเชพเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเชธเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเชชเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ wafเชคเซ‡เชฅเซ€ เช‰เชชเชฐเชจเชพ เชฌเชฆเชฒเซ‡ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เช•เชพเชฎ เช•เชฐเชถเซ‡:

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

เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชฎเซเช–เซเชฏ เช†เชฆเซ‡เชถ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ ./waf เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค --disable-python. เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเซ€เช• เชตเชงเซ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชŸเซ€เชชเซเชธ เชตเชฟเชถเซ‡ เช›เซ‡ เชตเชพเชซ.

เชฌเชฟเชฒเซเชก เชญเซ‚เชฒเซ‹ เชธเช‚เชญเชพเชณเชตเซ€

เชธเชพเชฎเชพเชจเซเชฏ Linux เช…เชจเซ‡ MacOS เชตเชฟเชคเชฐเชฃเซ‹ เชชเชฐ เชชเซเชฐเช•เชพเชถเชจ เชธเชฎเชฏเซ‡ เช‰เชชเชฒเชฌเซเชง เชจเชตเซ€เชจเชคเชฎ C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐเซเชธ เชชเชฐ ns-3 เชชเซเชฐเช•เชพเชถเชจเซ‹เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชธเชฎเชฏ เชœเชคเชพเช‚, เชจเชตเชพ เช•เชฎเซเชชเชพเชˆเชฒเชฐเซ‹ เชธเชพเชฅเซ‡ เชจเชตเชพ เชตเชฟเชคเชฐเชฃเซ‹ เชฌเชนเชพเชฐ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เช† เชจเชตเชพ เช•เชฎเซเชชเชพเชˆเชฒเชฐเซ‹ เชšเซ‡เชคเชตเชฃเซ€เช“ เชตเชฟเชถเซ‡ เชตเชงเซ เชชเซ‡เชกเชจเซเชŸเชฟเช• เชนเซ‹เชฏ เช›เซ‡. ns-3 เชคเซ‡เชจเชพ เชฌเชฟเชฒเซเชกเชจเซ‡ เชคเชฎเชพเชฎ เชšเซ‡เชคเชตเชฃเซ€เช“เชจเซ‡ เชญเซ‚เชฒเซ‹ เชคเชฐเซ€เช•เซ‡ เช—เชฃเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชœเซ‹ เชคเชฎเซ‡ เชจเชตเซ€ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชœเซ‚เชจเซ€ เช†เชตเซƒเชคเซเชคเชฟ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชต, เชคเซ‹ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชšเซ‡เชคเชตเชฃเซ€ เชฌเชฟเชฒเซเชกเชจเซ‡ เชฐเซ‹เช•เซ€ เชถเช•เซ‡ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เช—เชพเช‰ Fedora 3.28 เชฎเชพเชŸเซ‡ nsโ€‘28 เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ เชนเชคเซเช‚, เชœเซ‡เชฎเชพเช‚ เชเช• เชจเชตเซเช‚ เชฎเซเช–เซเชฏ เชธเช‚เชธเซเช•เชฐเชฃ เชธเชพเชฎเซ‡เชฒ เชนเชคเซเช‚. เชœเซ€เชธเซ€เชธเซ€ (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 เชฅเซ€ เชถเชฐเซ‚ เชฅเชคเชพ เชชเซเชฐเช•เชพเชถเชจเซ‹เชฎเชพเช‚, เชฎเชพเช‚ เชตเชพเชซ เช† เชธเชฎเชธเซเชฏเชพเช“ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชตเชฟเช•เชฒเซเชช เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เชคเซ‡ g++ เช…เชจเซ‡ clang++ เชฎเชพเช‚ "-Werror" เชซเซเชฒเซ‡เช— เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เช…เช•เซเชทเชฎ เช•เชฐเซ‡ เช›เซ‡. เช† "--disable-werror" เชตเชฟเช•เชฒเซเชช เช›เซ‡ เช…เชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฒเชพเช—เซ เชฅเชตเซ‹ เชœเซ‹เชˆเช:

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

เช—เซ‹เช เชตเซ‹ เช…เชฅเชตเชพ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ‹

เช•เซ‡เชŸเชฒเชพเช• เช†เชฆเซ‡เชถเซ‹ เชตเชพเชซ เชฎเชพเชคเซเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชœ เช…เชฐเซเชฅ เชงเชฐเชพเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชฎเชพเชคเซเชฐ เชฌเชฟเชฒเซเชก เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชœ เชฎเชพเชจเซเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ ns-3 เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเชฎเซ‡ เชฌเซ€เชŸ เชธเซ‡เชŸเชฟเช‚เช—เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชฆเช•เซเชทเชฟเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ sudo, เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡. เช† เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชชเช—เชฒเชพเช‚ เช†เชฆเซ‡เชถเซ‹เชจเซ‡ เช“เชตเชฐเชฐเชพเช‡เชก เช•เชฐเชถเซ‡, เช…เชจเซ‡ เช†เชฎ เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฌเชฆเชฒเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฎเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชชเชฃ เชถเชพเชฎเซ‡เชฒ เช›เซ‡.

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

เชœเซ‹ เชคเชฎเซ‡ เช† เช•เชฐเซ‹ เช›เซ‹ เชตเชพเชซ เชฒเซ‹เชจเซเชš เช•เชฐเชถเซ‡ sudoเชชเชฐเชตเชพเชจเช—เซ€เช“ เชธเชพเชฅเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจ เช•เซ‹เชก เชธเซ‹เช•เซ‡เชŸ เชฌเชจเชพเชตเชŸ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎเซ‹ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซเชŸ. เช† เชตเชพเชซ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เชธเซเชŸเซ‡เชชเซเชธ เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ เช˜เชฃเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เชคเชฎเชพเชฐเชพ เชตเชฟเช•เชฒเซเชชเซ‹เชจเซเช‚ เช…เชจเซเชตเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฆเชพเช–เชฒ เช•เชฐเซ‹:

$ ./waf --help

เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เช…เชฎเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชชเชฐเซ€เช•เซเชทเชฃ เชธเช‚เชฌเช‚เชงเชฟเชค เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚.

เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ

เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชœเซ‹เชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชตเชพเชซ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เช“ เชฎเชพเชŸเซ‡ เชกเชฟเชฌเช— ะธ เช“เชชเซเชŸเซ€เชฎเชพเช‡เชเซเชก:

$ ./waf --build-profile=debug

เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชชเชฃ เช›เซ‡, เชชเซเชฐเช•เชพเชถเชจ. เชตเชฟเช•เชฒเซเชช -d เชจเซ‹ เชชเชฐเซเชฏเชพเชฏ เช›เซ‡ --build-profile. เชฌเชฟเชฒเซเชก เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฒเซ‹เช—เซ€เช‚เช—, เชจเชฟเชตเซ‡เชฆเชจเซ‹ เช…เชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชธเซเชตเซ€เชšเซ‹เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡:

ns-3 เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ. เชชเซเชฐเช•เชฐเชฃ 3

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชฒเซ‹เช—เซ€เช‚เช— เช…เชจเซ‡ เชจเชฟเชตเซ‡เชฆเชจเซ‹ เชซเช•เซเชค เชกเซ€เชฌเช— เชฌเชฟเชฒเซเชกเซเชธเชฎเชพเช‚ เชœ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เชญเชฒเชพเชฎเชฃ เช•เชฐเซ‡เชฒ เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เช เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชกเซ€เชฌเช— เชฎเซ‹เชกเชฎเชพเช‚ เชตเชฟเช•เชธเชพเชตเซ‹, เชชเช›เซ€ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชฌเชฟเชฒเซเชก เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฐเชจ (เช†เช‚เช•เชกเชพ เช…เชฅเชตเชพ เชชเชฐเชฟเชฎเชพเชฃ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฎเชพเชŸเซ‡) เช•เชฐเซ‹.

เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซ‹เชก เช›เซ‡ เชœเซ‡ เชซเช•เซเชค เช…เชฎเซเช• เชฌเชฟเชฒเซเชก เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชฎเชพเช‚ เชœ เชšเชพเชฒเชตเซ‹ เชœเซ‹เชˆเช, เชคเซ‹ เช•เซ‹เชก เชฐเซ‡เชชเชฐ เชฎเซ‡เช•เซเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹:

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

เชฎเซ‚เชณเชญเซ‚เชค, เชตเชพเชซ เชฌเชฟเชฒเซเชก เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชฌเชฟเชฒเซเชก เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเซเชธ เชฎเซ‚เช•เซ‡ เช›เซ‡. เชคเชฎเซ‡ เชตเชฟเช•เชฒเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฒเช— เช†เช‰เชŸเชชเซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ -โ€ฏ-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 เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ GCC เชจเชพ C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ ( เชœเซ€ ++). เชœเซ‹ เช•เซ‡, เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹ เชคเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‹ เช›เซ‹ เชตเชพเชซ C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐ, CXX เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เชจเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช•เซเชฒเซ‡เช‚เช—, เช•เซเชฒเซ‡เช‚เช—++เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡,

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

เช เชœ เชฐเซ€เชคเซ‡ เชคเชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชตเชพเชซ เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชธเช‚เช•เชฒเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ distcc:

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

distcc เช…เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชธเช‚เช•เชฒเชจ เชตเชฟเชถเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเซƒเชทเซเช  เชชเชฐ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡. ns-3 เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชซเซเชฒเซ‡เช— เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡, CXXFLAGS_EXTRA เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹.

เชธเซเชฅเชพเชชเชจ

เชตเชพเชซ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชตเชฟเชตเชฟเชง เชธเซเชฅเชณเซ‹เช เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเชชเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เชธเช‚เช•เชฒเชฟเชค เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เช…เชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡ เชฌเชฟเชฒเซเชก เช•เชฐเซ‹, เช…เชจเซ‡ Waf เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช…เชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒเซเชธเชจเซเช‚ เชธเซเชฅเชพเชจ เชœเชพเชฃเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซ‡ เชฌเซ€เชœเซ‡ เช•เซเชฏเชพเช‚เชฏ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชœเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฌเชฟเชฒเซเชก เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ€ เชฌเชนเชพเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡เช“ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡ ./waf เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹. เชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เช‰เชชเชธเชฐเซเช— เช›เซ‡ / เชฏเซเชเชธเช†เชฐ / เชธเซเชฅเชพเชจเชฟเช•, เชคเซ‡เชฅเซ€ ./waf เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ เชฎเชพเช‚ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชถเซ‡ / เชฏเซเชเชธเช†เชฐ / เชธเซเชฅเชพเชจเชฟเช• / เชฌเชฟเชจ, เชฎเชพเช‚ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ / usr / เชธเซเชฅเชพเชจเชฟเช• / lib เช…เชจเซ‡ เชนเซ‡เชกเชฐ เชซเชพเช‡เชฒเซ‹ /usr/local/include. เชธเซเชชเชฐเชฏเซเชเชฐ เช…เชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เช‰เชชเชธเชฐเซเช— เชธเชพเชฅเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เชเช• เชฒเชพเช•เซเชทเชฃเชฟเช• เช†เชฆเซ‡เชถ เชนเชถเซ‡ sudo ./waf เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹. เชœเซเชฏเชพเชฐเซ‡ เชฒเซ‰เชจเซเชš เชฅเชถเซ‡, เชคเซเชฏเชพเชฐเซ‡ Waf เชธเซŒเชชเซเชฐเชฅเชฎ เชฌเชฟเชฒเซเชก เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชถเซ‡เชฐ เช•เชฐเซ‡เชฒเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเชถเซ‡, เชชเช›เซ€ เชธเซเชฅเชพเชจเชฟเช• เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเชพ เชชเชพเชฅ เชธเชพเชฅเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชถเซ‹เชงเชถเซ‡. เชคเซ‡เชฅเซ€ เชœเซเชฏเชพเชฐเซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชˆเชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ เชฏเซ‹เช—เซเชฏ เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชˆ เชฐเชนเซเชฏเซ‹ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ เชคเซ‡ เชคเชชเชพเชธเชตเซเช‚ เช เชธเชพเชฐเซ€ เชชเซเชฐเชฅเชพ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเชฟเช•เชฒเซเชช เชชเชธเชพเชฐ เช•เชฐเซ€เชจเซ‡ เช…เชฒเช— เช‰เชชเชธเชฐเซเช— เชธเชพเชฅเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ --prefix, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡:

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

เชœเซ‹ เชชเชพเช›เชณเชฅเซ€, เชฌเชฟเชฒเซเชก เชชเช›เซ€, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช†เชฆเซ‡เชถ เชฆเชพเช–เชฒ เช•เชฐเซ‡ เช›เซ‡ ./waf, เช‰เชชเชธเชฐเซเช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ /opt/local.

เชŸเซ€เชฎ ./waf clean เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‡ เชคเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชชเซเชจเชƒเชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เช†เชตเชถเซเชฏเช• เช›เซ‡ เชตเชพเชซ เชเช• เช…เชฒเช— เช‰เชชเชธเชฐเซเช— เชนเซ‡เช เชณ.

เช†เชฎ, ns-3 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ ./waf install. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช† เช†เชฆเซ‡เชถเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เช•เชพเชฐเชฃ เช•เซ‡ เชตเชพเชซ เชฌเชฟเชฒเซเชก เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชชเชธเช‚เชฆ เช•เชฐเชถเซ‡, เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเชพเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช† เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡ เชœเซ‹ เชคเซ‡เชฎเชจเซ€ เชชเซเชฐเชตเซƒเชคเซเชคเชฟเช“เชฎเชพเช‚ ns-3 เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ€ เชฌเชนเชพเชฐเชจเชพ เช•เชพเชฐเซเชฏเช•เซเชฐเชฎเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชธเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ.

เชตเชพเชซ เชธเชฟเช‚เช—เชฒ

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)

เชตเซ‡เชฒเช—เซเชฐเชฟเชจเซเชก เช•เซเชฐเซ‡เชถ, เช•เซเชฐเซ‡เชถ เช…เชฅเชตเชพ เชญเซ‚เชฒเซ‹ เช“เชณเช–เชตเชพ เชฎเชพเชŸเซ‡ เช† เชเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชธเช‚เชฆเซ‡เชถ เช›เซ‡, เชœเซ‡ เช•เซ‹เชก เชธเชพเชฅเซ‡เชจเซ€ เชธเชฎเชธเซเชฏเชพเช“ เช…เชฅเชตเชพ เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เช•เซ‹เชก เชตเชšเซเชšเซ‡เชจเซ€ เช…เชธเช‚เช—เชคเชคเชพ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡.

เชคเชฎเซ‡ เชฎเชพเช‚เชฅเซ€ เช…เช‚เชคเชฟเชฎ เช†เช‰เชŸเชชเซเชŸ เชชเชฃ เชœเซ‹เชถเซ‹ เชตเชพเชซ เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชŸเซ‡เชธเซเชŸ เชšเชฒเชพเชตเชคเซ‹ เชŸเซ‡เชธเซเชŸเชฐ, เชœเซ‡ เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

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 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช›เซ‹!

เชœเซ‹ เชฎเชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชจ เชฆเซ‡เช–เชพเชฏ เชคเซ‹ เชฎเชพเชฐเซ‡ เชถเซเช‚ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช?

เชœเซ‹ เชคเชฎเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“ เชœเซเช“ เช›เซ‹ เชตเชพเชซเชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชฌเชฟเชฒเซเชก เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซ‚เชฐเซเชฃ เชฅเชฏเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชฆเซ‡เช–เชพเชคเซเช‚ เชจเชฅเซ€ "เชนเซ‡เชฒเซ‹ เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ", เชคเซ‹ เชเชตเซ€ เชถเช•เซเชฏเชคเชพ เช›เซ‡ เช•เซ‡ [เชฌเชฟเชฒเซเชก-เชตเชฟเชฅ-เชตเชพเชซ] เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฌเชฟเชฒเซเชก เชฎเซ‹เชกเชจเซ‡ เชธเซเชตเชฟเชš เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช“เชชเซเชŸเซ€เชฎเชพเช‡เชเซเชก, เชชเชฐเช‚เชคเซ เชฎเซ‹เชก เชชเชฐ เชชเชพเช›เชพ เชธเซเชตเชฟเชš เช•เชฐเชตเชพเชจเซเช‚ เชšเซ‚เช•เซ€ เช—เชฏเซเช‚ เชกเชฟเชฌเช—. เช† เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒเชฎเชพเช‚ เชตเชชเชฐเชพเชคเชพ เชคเชฎเชพเชฎ เช•เชจเซเชธเซ‹เชฒ เช†เช‰เชŸเชชเซเชŸ เช–เชพเชธ ns-3 เช˜เชŸเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชฒเซ‹เช—เซ€เช‚เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เช•เชธเซเชŸเชฎ เชธเช‚เชฆเซ‡เชถเชพเช“ เช›เชพเชชเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เซ‹เชก เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เช† เช˜เชŸเช•เชฎเชพเช‚เชฅเซ€ เช†เช‰เชŸเชชเซเชŸ เช†เชชเชฎเซ‡เชณเซ‡ เช…เช•เซเชทเชฎ เชฅเชˆ เชœเชพเชฏ เช›เซ‡ - เชคเซ‡ "เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช" เช›เซ‡. เชœเซ‹ เชคเชฎเชจเซ‡ "เชนเซ‡เชฒเซ‹ เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ" เช†เช‰เชŸเชชเซเชŸ เชฆเซ‡เช–เชพเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชจเซ€เชšเซ‡เชจเชพ เชฆเชพเช–เชฒ เช•เชฐเซ‹:

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

เชฌเซ€เชœเซเช‚ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช‰เชฆเชพเชนเชฐเชฃ เชŸเซ‡เชธเซเชŸ เชธเซเชฏเซเชŸเซเชธเชจเซ‡ เชชเชธเช‚เชฆเช—เซ€เชชเซ‚เชฐเซเชตเช• เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เชšเชพเชฒเซ‹ เชฎเชพเชจเซ€ เชฒเชˆเช เช•เซ‡ เชฎเชพเชฏเชŸเซ‡เชธเซเชŸ เชจเชพเชฎเชจเซ‹ เชŸเซ‡เชธเซเชŸ เชธเซเชฏเซเชŸ เช›เซ‡ (เชนเช•เซ€เช•เชคเชฎเชพเช‚ เชคเซเชฏเชพเช‚ เชจเชฅเซ€). เช‰เชชเชฐ เช…เชฎเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ ./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 เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชœเซ‡เชฎ เช•เซ‡ เชกเซ€เชฌเช—เชฐ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ€เชกเซ€เชฌเซ€) เช…เชฅเชตเชพ เชฎเซ‡เชฎเชฐเซ€ เชŸเซ‡เชธเซเชŸ เชŸเซ‚เชฒ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, valgrind), เชธเชฎเชพเชจ เชธเซเชตเชฐเซ‚เชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ -โ€ฏ-command-template = "โ€ฆ". เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชกเซ€เชฌเช—เชฐเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเซ€เชกเซ€เชฌเซ€ เชฆเชฒเซ€เชฒเซ‹ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฐเซ‹ เชนเซ‡เชฒเซ‹-เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชเชจเชเชธ-3 เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ:

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

เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ ns-3 เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซเช‚ เชจเชพเชฎ เชฆเชฒเซ€เชฒ เชธเชพเชฅเซ‡ เช†เชตเซ‡ เช›เซ‡ -โ€ฏ-run, เช…เชจเซ‡ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€ (เช…เชนเซ€เช‚ เชœเซ€เชกเซ€เชฌเซ€) เช เชฆเชฒเซ€เชฒเชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชŸเซ‹เช•เชจ เช›เซ‡ -โ€ฏ-command-template. เชตเชฟเช•เชฒเซเชช -โ€ฏ-args เชœเชพเชฃ เชœเซ€เชกเซ€เชฌเซ€เช•เซ‡ เชฌเชพเช•เซ€เชจเซ€ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ "เชฒเซ‹เช…เชฐ" เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ€ เช›เซ‡. (เช•เซ‡เชŸเชฒเชพเช• เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชœเซ€เชกเซ€เชฌเซ€ เชตเชฟเช•เชฒเซเชช เชธเชฎเชœเชพเชคเซ‹ เชจเชฅเซ€ -โ€ฏ-args. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฆเชฒเซ€เชฒเซ‹ เชฆเซ‚เชฐ เช•เชฐเซ‹ -โ€ฏ-command-template เช…เชจเซ‡ เช†เชฆเซ‡เชถ เชธเชฎเซ‚เชนเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เชœเซ€เชกเซ€เชฌเซ€ เชฆเชฒเซ€เชฒเซ‹.) เชกเซ€เชฌเช—เชฐ เชนเซ‡เช เชณ เชŸเซ‡เชธเซเชŸ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เช† เชฐเซ‡เชธเซ€เชชเซ€ เช…เชจเซ‡ เชชเชนเซ‡เชฒเชพเชจเซ€ เชฐเซ‡เชธเซ€เชชเซ€เชจเซ‡ เชœเซ‹เชกเซ€ เชถเช•เซ€เช เช›เซ€เช:

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

3.6.3 เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพ

เชตเชพเชซเชจเซ‡ ns-3 เชตเซƒเช•เซเชทเชจเซ€ เชŸเซ‹เชš เชชเชฐเชจเชพ เชคเซ‡เชจเชพ เชธเซเชฅเชพเชจ เชชเชฐเชฅเซ€ เชฒเซ‹เชจเซเชš เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช. เช† เชซเซ‹เชฒเซเชกเชฐ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เชซเชพเช‡เชฒเซ‹ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ เช† เชซเชพเช‡เชฒเซ‹เชจเซ‡ ns-3 เชธเซเชคเซเชฐเซ‹เชค เชตเซƒเช•เซเชทเชจเซ€ เชฌเชนเชพเชฐ เชฐเชพเช–เชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹เชต เชคเซ‹ เชถเซเช‚? เชฆเชฒเซ€เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ -โ€ฏ-cwd:

$ ./waf --cwd=...

เชคเชฎเชพเชฐเซ€ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชฎเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เชซเชพเช‡เชฒเซ‹ เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เชคเชฎเชจเซ‡ เชตเชงเซ เช…เชจเซเช•เซ‚เชณ เชฒเชพเช—เชถเซ‡. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชจเซ€เชšเซ‡เชจเซ€ เชชเชฐเซ‹เช•เซเชท เช•เซเชฐเชฟเชฏเชพเช“ เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡:

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

เช†เชฆเซ‡เชถเชจเชพ เชชเชพเช›เชฒเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซเช‚ เช† เชธเซเชถเซ‹เชญเชจ เชตเชฐเซเชคเชฎเชพเชจ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชจเซ‡ เชธเชพเชšเชตเซ‡ เช›เซ‡, เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡ เชตเชพเชซเช…เชจเซ‡ เชชเช›เซ€ เชธเซ‚เชšเชจเชพ เช†เชชเซ‡ เช›เซ‡ เชตเชพเชซ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชถเชฐเซ‚ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชธเชพเชšเชตเซ‡เชฒ เชตเชฐเซเชคเชฎเชพเชจ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชฎเชพเช‚ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡. เช…เชฎเซ‡ เชŸเซ€เชฎเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เช เช›เซ€เช -โ€ฏ-cwd เชธเช‚เชชเซ‚เชฐเซเชฃเชคเชพ เชฎเชพเชŸเซ‡, เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชซเช•เซเชค เชŸเซ‹เชšเชจเชพ เชธเซเชคเชฐเชจเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ Waf เชšเชฒเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เชซเชพเช‡เชฒเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ: เชชเซเชฐเช•เชฐเชฃ 4

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹