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 แแแคแแแ แแ แแแ แแจแแแแแ
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 แแแกแขแแแแชแแแก แแแแแแแแ แแแแก แแแ แกแแแแแก แแกแแแแแก แจแแ แฉแแแ แแ แจแแแ แแแ. แแแกแแแ แแ แแก แแแแแขแแแแแ build แแแกแขแ แฃแแแแขแแแแก แแแแแงแแแแแ ns-3-แแกแแแแก แแแขแ แแแคแแ แแแแแแก แฉแแกแแขแแแ แแแ. แฉแแแ แแแแแแฎแแแแแ แแแแแแฃแแก, แ แแแแแ แแแกแขแ แฃแแแแขแแแ แแแแแ แแแแกแฎแแแแแแฃแแแ.
Linux-แแก แแแแแชแแแ แแแแฎแแแ แแแแแแก แจแแแซแแแแ แแแฃแแแแ แแแ, แ แแขแแ แแ แแ แแก แแแฌแแแแแฃแแ ns-3 แแแแแขแแก แกแแฎแแ, แ แแแแ แช แกแฎแแ แแแแแแแแแแแแแก แฃแแแขแแกแแแ, แ แแแแแแแช แแงแแแแแแ แแแแแขแแก แแแแแฏแแ แก? แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแ แกแแแแแก แแ แแแแแ แแแแแขแแแ Linux-แแก แกแฎแแแแแกแฎแแ แแแกแขแ แแแฃแชแแแกแแแแก (แแแ. Debian), แแแแฎแแแ แแแแแแ แฃแแแขแแกแแแ แแแแแ แแแแ แแแแแแแแแแแแแก แ แแแแฅแขแแ แแแแ แแ แแแแแ แฃแฌแแแ ns-3-แแก แแฆแแแแแแก, แแแแขแแ แฌแงแแ แแก แแแแ แฎแแแแแกแแฌแแแแแแ. แแ แแแแแแแ, แฉแแแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ แฌแงแแ แแแแ แแแกแขแแแแชแแแแ.
แฃแแแขแแก แแแแแแแชแแแแแกแแแแก ns-3 แฃแคแแแแแแ root แแ แแ แแก แกแแญแแ แ, แ แแแแแแแแแแฃแแแ แแ แแแ แแแแแแแแ แแแฃแแ แแแแฎแแแ แแแแแก แแแแแ แแจแแก แแแแแงแแแแแ.
3.2 แฌแแแแแแ แแแแแ
แฎแแแแแกแแฌแแแแแ ns-3 แแแแแแแแแแแแแก แแแแ แแแแแแแฅแขแก แแฅแแก แ แแแ แแแแแแแแแแฃแแแแแแ แแแกแแแ แแฎแแ แแก แแแแแแแแแแแแแ, แแแแ แแ แฃแแแขแแกแฌแแแแ ns-3 แจแแแซแแแแ แแจแแแแแก แแ แแแแแแงแแแแก แ แแแแแแแแ แฉแแแฃแแแแ แแแ (แฎแจแแ แแ แแแแฃแแแกแฎแแแแแ แแแแแกแขแแแแ แแแฃแแ) แแแแแแแแแขแแก แแฎแแ แแแญแแ แแ: C++ แจแแแแแแแแแ, แแแแแแ, แฌแงแแ แ แแแแแก แ แแแแฅแขแแ แ (แแแแแแแแแ, vim, emacs แแ Eclipse) แแ, แแฃ แแแแแแงแแแแแ แแแแแแแแ แแแแก แกแแชแแแ, Git แแแ แกแแแก แแแแขแ แแแแก แกแแกแขแแแแแ. แแแ แแแแแ แแแแฎแแแ แแแแแแ แฃแแแขแแกแแแแก แแ แแแกแญแแ แแแแ แคแแฅแ แ, แแฃ แแแแ แแแแคแแแฃแ แแชแแ แแขแงแแแแแแแ, แ แแ แแแแแแ แแ ns-3 แแแฌแแแแแ แคแฃแแฅแชแแ แแแแแ, แแแแ แแ แแแแแแแก, แแแกแแช แกแฃแ แก แกแ แฃแแ แแแกแขแแแแชแแ, แแ แแแฅแขแ แฃแแ แฃแแแแแงแแคแก แแแแ, แ แแแแแแช แแแแชแแแก แแแแ แแแแก แฃแแแ แแแ แกแแกแแ แแแแแ แ แฉแแแแแ แแ แฎแ แแแแ. แแ แ-แแ แแ แแกแแแ แแแแ แแแ แแแกแขแแแแชแแแก แแแแ แแ, แกแฎแแแแแกแฎแแ แกแแกแขแแแแก แแแกแขแแแแชแแแก แแแกแขแ แฃแฅแชแแแแแ, แฎแแแแแกแแฌแแแแแแ:
แแ แแแแแก แฌแแแแแแ แแแแแแก แแแแงแแคแแแแแ แแแแแแ แขแแแก, แแฃ แ แแแแแ แแแแแขแแแแ แกแแญแแ แ แกแแแ แแ ns-3 แแแ แแแแขแแแแก แแฎแแ แแแกแแญแแ แแ แแ แแกแแแ แจแแแชแแแก แแ แซแแแแแแแก, แ แแแแแแแช แแแแแแงแแแแแ Linux-แแก แแ macOS-แแก แกแแแ แแ แแแแแแแแแแแ แแแแ แแแกแขแแแแชแแแกแแแแก.
แจแแแแซแแแแ แแกแแ แแแแแแ แแ แจแแกแแซแแแแแแแแ แแ แแแแแแแแแแ แแ ns-3 แแแแ แแแแ แแ แแ แแแแแแ แ แแแแแแแ แแ:
แฎแแแกแแฌแงแแแแแก แแแแแขแ/แแแ แกแแ
- C++ แจแแแแแแแแแ
clang++ แแ g++ (g++ แแแ แกแแ 4.9 แแ แฃแคแ แ แแแฆแแแ) - Python
python2 แแแ แกแแ >= 2.7.10, แแ python3 แแแ แกแแ >=3.4 - แฌแแกแแแ
แแแแแกแแแแ แ แฃแแฎแแแกแ แแแ แกแแ (ns-3-แแ แฌแแแแแแกแแแแก GitLab.com-แแ) - tar
แแแแแกแแแแ แ แฃแแฎแแแกแ แแแ แกแแ (nsโ3 แแแแแจแแแแแก แแแกแแฎแกแแแแแ) - bunzip2
แแแแแกแแแแ แ แฃแแฎแแแกแ แแแ แกแแ (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
แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแแแ แแแแแงแแแแแฃแ แแ แแแ แแแแก 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-แแ
Git แกแแชแแแแแแก แแแแแงแแแแแแก แแแกแแฌแงแแแแ แฃแแแ แขแแแแกแ แแแแ แแแ แแแแก แฉแแแแแแ แแ แแแแแแ แแแ 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, bake, pybindgen ะธ แแแขแแแแแ.
แจแแแแจแแแ
แกแฃแคแแ Ubuntu16.04 แแแแฅแแแแแ แแแแญแแ แแ แแ แซแแแแแแก แจแแชแแแ แจแแแแแแแ: $ sudo python3 download.py -n ns-3.29
(แจแแแแแแแจแ แแแแ แแแแแแแก แจแแแแจแแแแแ).
3.3.1 ns-3 แฉแแขแแแ แแแ Bake-แแก แแแแแงแแแแแแ
แแแแแแฆแแแจแแฃแแ แแ แ แแแแแแ (แฌแงแแ แแก แแ แฅแแแ แแ แกแแชแแแ ns-3-แแแแแแแ Git-แแก แแแจแแแแแแ) แกแแกแแ แแแแแแ แฃแแแ แขแแแแกแ ns-3 แแแกแขแแแแชแแแก แแแกแแฆแแแแ แแ แแแแแ แแแแแขแแแแ(pybindgen แแแแแแแก แแแแจแแ แแแแก แแแแแ แแ แแแ แแ แแแขแแแแแ แฅแกแแแแก แแแแแแชแแแกแแแแก). ns-3-allinone-แจแ แแแแฃแแแกแฎแแแแแ แแแฌแแแแแฃแแ แแแกแแแ แกแแชแแแ แแฌแแแแแ bake.
Bake แแ แแก แแ แแแแแ แกแแชแแแแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแ แแแแแ แแแฃแแ แแแแแแก แแแกแขแ แฃแแแแขแ, แจแแแฃแจแแแแแฃแแ ns-3 แแ แแแฅแขแแกแแแแก. Bake แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก ns-3-แแก แแแแแแแแ แแแแก แแแ แกแแแแแก แแแกแแฆแแแแ, แแกแแแ ns-3 แแแกแขแ แแแฃแชแแแก แกแแแแแแกแ แแแ แกแแแก แแแคแแ แแแแแแแแก แฉแแแแขแแแ แแแแกแ แแ แแกแแแแแแ, แ แแแแ แแชแแ แแแ แแแ. แแแแแก แแแ แแแแแ แ แจแแกแ แฃแแแแ, CradleNetwork Simulation Cradle, แแแแแแแก แแฎแแแ แกแแแแแซแแแแก แแ แกแฎแแแแแกแฎแแ ns-3 โแแแแแแแชแแแแแกโ แจแแฅแแแแก แจแแกแแซแแแแแแแ.
แจแแแแจแแแ
CradleNetwork Simulation Cradle แแ แแก แฉแแ แฉแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแงแแแแ แ แแแแฃแ แ TCP/IP แฅแกแแแแก แกแขแแแแแ แฅแกแแแแก แกแแแฃแแแขแแ แแก แจแแแแแ.
แแฃ แคแแฅแ แแแ, แ แแ แแฅแแแแก ns-3 แแแกแขแแแแชแแแก แแฅแแแแ แแแฌแแแแแ แแ แแแแแขแแแแแ แคแฃแแฅแชแแแแ, แจแแแแซแแแแ แแแฐแงแแแ แแแกแขแแแแชแแแก แแ แแแแก.
ns-3-แแก แฃแแฎแแแก แแแแแจแแแแแแจแ Bake แขแแ แแก แแแแแจแแแแแก แแแแแแขแ. แแแแแชแแแ แแแแชแแแก แแแแคแแแฃแ แแชแแแก แคแแแแก, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แฉแแแแขแแแ แแแ แแแแแแแแ แ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแ แกแแแแ แแแแแจแแแแแก แแ แแก. แแก แแ แแก, แแแแแแแแแ, แแแ แกแแ Bake, แ แแแแแแช แแแแแฌแแแแแฃแแแ แแแแแจแแแแแ ns-3.29, แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแแแแแแแแขแแแแก แแแกแแซแแแแแแ ns-3 แแ แฃแคแ แ แแแ แแฃแแ แแแแแจแแแแแกแแแแก, แแแแ แแ แแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแแแแแแแแขแแแแก แแแกแแซแแแแแแ แแแแแแแแแแแ แแแแแจแแแแแกแแแแก (แแฃ แแแแแขแแก แแฆแฌแแ แแแแแแก แคแแแแแ bakeconf.xml แแ แแ แแก แแแแแฎแแแแฃแแ).
แแกแแแ แจแแแแซแแแแ แแแแฆแแ แฃแแฎแแแกแ แแกแแ bakeแแฅแแแแก 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.
แแ แซแแแแแแก แแแกแ แฃแแแแแก แจแแแแแ แแแแแ แแฅแแแ แฃแแแ แแฅแแแแแ แแแ แแฅแขแแ แแ แแแกแแฎแแแแแฃแแ bake, แ แแแแแก แจแแแแแ แกแ แแแแฎแแแแแแ แแกแ แฃแแแ แแแแแแงแฃแ แแแแแแก:
$ cd bake
$ ls
bake bakeconf.xml bake.py doc examples generate-binary.py test TODO
แแแแแแแแแกแฌแแแแ, แ แแ แแฅแแแ แฉแแขแแแ แแแ แ แแแแแแแแ แแแแแแแก แกแแ แแแขแ, แกแแฎแแแแ แแแแแแแก แแแแฃแแ bake แแ XML แแแแคแแแฃแ แแชแแแก แคแแแแ. แจแแแแแแ แแแแแฏแ แแ แแก แแ แกแแ แแแขแแแแก แแแแแงแแแแแ แแฅแแแแ แแ แฉแแแแแแก ns-3 แแแกแขแ แแแฃแชแแแก แฉแแแแกแแขแแแ แแแ แแ แจแแกแแฅแแแแแแ. แแแ แกแแแแแแแแชแแแก แ แแแแแแแแ แแแแแแ แฎแแแแแกแแฌแแแแแแ:
-
ns-3.29: แแแแแจแแแแแก แจแแกแแแแแแกแ แแแแฃแแ; แแก แฉแแแแขแแแ แแแแก แขแแ แแแแจแ แแแแแจแแแแแก แแกแแแแก แแแแแแแแแขแแแก;
-
ns-3-dev: แแกแแแแกแ แแแแฃแแ, แแแแ แแ แแแแแก แแแแแงแแแแแแ แแแแแแแแ แแแแก แฎแแแแ;
-
ns-แแแแแแแ-3.29: แแแแฃแแ, แ แแแแแแช แแแแชแแแก แกแฎแแ แแแแแขแแแแ แคแฃแแฅแชแแแแก, แ แแแแ แแชแแ Click routing แแ Network Simulation Cradle, Openflow for ns-3.
-
ns-3-แแแแแแแ: แแแแฃแแแก แแแแแจแแแแแก แแแ แกแแแก แแกแแแแกแ แงแแแแ แแ แแจแ, แแแแ แแ แแแแแแแแ แแแแก แแแแแกแแแแก.
แจแแแแจแแแ
แแแฌแแแแแ โ แแแแฃแแฃแ แ แแ แแแ แแแฃแแ แแ แฅแแขแแฅแขแฃแ แ แแแ แจแ แฃแขแแแแขแแ แแแแก แจแแกแแฅแแแแแแ.
Openflow แแ แแก แแ แแขแแแแแ แแแ แจแ แฃแขแแแแขแแ แแแแกแ แแ แแแแแแ แแแแแแแแก แแแแ แแแแแชแแแแ แฅแกแแแจแ แแแแแชแแแฃแแ แแแแแชแแแแแแก แแแแฃแจแแแแแแก แแ แแชแแกแแก แแแ แแแแกแแแแก, แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแ แแแแกแแแฆแแ แฃแแ แฅแกแแแฃแ แ แขแแฅแแแแแแแแก แแแแแ แแแแ.
แแแแแแแแ แ แแแแแแแแ แแแแก แกแแแแจแแขแ (แแ แแแแแแจแแแแฃแแ) ns-3 แจแแแแซแแแแ แแฎแแแแ แแฅ:
แแแแแแแแแ แแแ แชแแแแแแแ แจแแแแแ แฉแฃแแแ แแก แกแแชแแแ แแแแแแแแแแ แฃแ แกแแแฃแจแแ แ แแแแแจแ, แแแแ แแ แแกแแแ แแแแแแแแ แแแแก แแแแแจแแ แแ แจแแแชแแแก แแแแแฃแฅแแแงแแแแแ แแแแก, แแกแ แ แแ, แแฃ แแ แแแแ แแแ แแฎแแแ แคแฃแแฅแชแแแแแก แแแแแงแแแแแแก, แแแ แฉแแแ แแคแแชแแแแฃแ แ แแแแแจแแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแแแ แแแแแก แฃแแฎแแแกแ แแแ แกแแ แกแแชแแแแแแก แกแแแก แแแแแแแแแ แแแแ, แแ ns-3 Releases แแแ-แแแแ แแแ แแแแแกแแแแ:
แแฎแแ, แฉแแแแแแแก แกแแญแแ แ ns-3 แแแแแแแแแขแแแแก แแแกแแฆแแแแ, แฉแแแ แแแแแแแงแแแแแ แฎแแแกแแฌแงแแก Bake. แแแแแ แแแฅแแแ แ แแแแแแแแ แจแแกแแแแแ แกแแขแงแแ แแแฌแแ แแแแแแก แจแแกแแฎแแ Bake.
Bake แแฃแจแแแแก แแแแแขแแก แฌแงแแ แแแแแก แแแ แแฅแขแแ แแแจแ แฉแแขแแแ แแแแ แฌแงแแ แ แแ แแแแแแแแแแแแแก แแแงแแแแแ build แแแ แแฅแขแแ แแแจแ. Bake แจแแแซแแแแ แแแจแแแแฃแแ แแงแแก แแ แแแแแ แแแแแแแแแ, แแแแ แแ แแฃ แแกแฃแ แ แแแจแแแแ Bake แแ แ แแ แแแ แแฅแขแแ แแแแแ, แ แแแแแจแแช แแก แแแแแแฌแแ แแแ แแงแ, แแแแแแจแแฌแแแแแแ แแแแแแขแแ แแแแแแ bake แแฅแแแแก แแแแแ (PATH แแแ แแแแก แชแแแแแ), แแแแแแแแแ, แจแแแแแแแแแ แแ (แแแแแแแแ Linux bash shell-แแกแแแแก). แแแแแแแ "bake" แแแ แแฅแขแแ แแแจแ แแ แจแแแแแ แแแแงแแแแ แจแแแแแแ แแแ แแแแก แชแแแแแแแ:
$ export BAKE_HOME=`pwd`
$ export PATH=$PATH:$BAKE_HOME:$BAKE_HOME/build/bin
$ export PYTHONPATH=$PYTHONPATH:$BAKE_HOME:$BAKE_HOME/build/lib
แแก แแแแแแแแกแแแก แแ แแแ แแแแก bake.py shell แแแแแ แแ แกแแจแฃแแแแแแก แแแกแชแแแก แกแฎแแ แแ แแแ แแแแแก แแแแแแ แจแแกแ แฃแแแแแแ แคแแแแแแ แแ แแแแแแแแแแแแ, แ แแแแแแแช แแแ แจแแฅแแแ bake. แแแแแงแแแแแแก แแแแแแ แ แจแแแแฎแแแแแจแ bake, แแแแแ แแฆแฌแแ แแแ PATH แแ PYTHONPATH แแแ แแแแขแ แ แแ แแ แแก แกแแญแแ แ, แแแแ แแ ns-3-allinone-แแก แกแ แฃแแ แแแแกแขแ แฃแฅแชแแ (แแแแแขแแแแแ แแแแแขแแแแ) แฉแแแฃแแแแ แแ แแแแแฎแแแก แแแแก.
แแแแแแแ แแฅแแแแก แกแแแฃแจแแ แแแ แแฅแขแแ แแแจแ แแ แจแแแงแแแแแ แจแแแแแแ แแแแกแแแจแ:
$ ./bake.py configure -e ns-3.29
แจแแแแแ แฉแแแ แแแแแแฎแแแ Bake แจแแแแแฌแแแ แแแแฅแแก แแฃ แแ แ แกแแแแแ แแกแ แฎแแแกแแฌแงแแแแ แกแฎแแแแแกแฎแแ แแแแแแแแแขแแแแก แฉแแกแแขแแแ แแแ. แแแ แแคแแ:
$ ./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 แแแกแขแ แฃแแแแขแแก แแแแแงแแแแแแ, แ แแแแแกแแช แ.แฌ แแแคแฅแแแแแ แแฆแฌแแ แแแ. แแแแฎแแแ แแแแแแแก แฃแแแขแแกแแแ แแแฃแจแแแแแก แแแค, แแแแ แแ แแ แกแแแแแก แ แแแแแแแแ แแแกแแฎแแ แฎแแแแแ แกแแ แแแขแ, แ แแแแแแช แแแแแฎแแแ แแแแ แแแแฌแงแแ แแ แแแแฌแงแแ แฃแคแ แ แ แแฃแแ แแแแกแขแ แฃแฅแชแแแแ. แแกแ แ แแ, แแแฎแแแ, แกแแแแ แฌแแแแแแฎแแแ แจแแกแแฎแแ แแแค, แจแแฎแแแแ build.py แแ แจแแแ แแแ bake.
3.4.1 แจแแแแแ build.py-แแ
แงแฃแ แแแฆแแแ แแจแแแแแแแแแก แแก แแขแแแ แฎแแแแแกแแฌแแแแแแ แแฎแแแแ แฌแงแแ แแก แแ แฅแแแแก แแแ แกแแแแแ, แ แแแแแแช แแแฆแแแฃแแแ แแแแแ แแฆแฌแแ แแแ; แแ แแ แแ แแก แแแแแแฌแแ แแแ git-แแ แแ bake-แแ.
แแแแแจแแแแแก แแ แฅแแแแแ แแฃแจแแแแแกแแก แขแแ แแแแIn ns-3-แแแแแแแ แแ แกแแแแแก แแแกแแฎแแ แฎแแแแแ แกแแ แแแขแ, แ แแแแแกแแช แจแแฃแซแแแ แแแแแแแแแก แแแแแแแแแขแแแแก แแฌแงแแแ. แแแก build.py แฐแฅแแแ. แแก แแ แแแ แแแ แแแแงแแแแแก แแ แแแฅแขแก แแฅแแแแแแแก แงแแแแแแ แกแแกแแ แแแแแ แแแแ. แแฃแแชแ, แแแแแแแแแกแฌแแแแ, แ แแ แฃแคแ แ แแแคแแ แแแแแฃแแ แแแงแแแแแ แแ แแฃแจแแแแ ns-3-แแแ แฉแแแฃแแแแ แแ แแแแชแแแก ns-3-แแก แกแแแฃแแแ แ build แกแแกแขแแแแก, Waf-แแก แแแแแงแแแแแแก, แ แแแแแแช แแแแแแแแแแแ แแฅแแแแ แฌแแ แแแแแแแแแ แแ แกแแฎแแแแซแฆแแแแแแแจแ.
แแฃ แแแแแแฌแแ แ แแแแแงแแแแแแ แขแแ แแแแ, แจแแแแแ แแฅแแแแก แแแ แแฅแขแแ แแแจแ ~/แกแแแฃแจแแ แกแแแ แชแ แแแ แแฅแขแแ แแ แแกแแแแกแ แกแแฎแแแแ ns-แแแแแแแ-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
Tooltip: แแกแแแ แจแแแแซแแแแ แแ แแแ แแฃแแแ แจแแแกแ แฃแแแ แ แแแแ แช แฉแแแแขแแแ แแแแก, แแกแแแ แแจแแแแแแก แแแแแฏแแแ "bake.py deploy" แแแ แแแแแ.
แงแแแแ แแแแแแแแแขแแก แแฌแงแแแ แจแแแซแแแแ แแแ แแแฎแแ แฎแแแก, แแแแ แแ แจแแแ แแแ แแแแ แซแแแแแแ, แแฃ แแแแแแแแแขแ แแ แแ แแก แกแแญแแ แ. แแแแแแแแแ, แแแแแแ แแแแแแแ แแแ แขแแแแแฃแ แแแแก แแ แแแแแแ แแงแ แแก castxml แจแแแซแแแแ แแฌแงแแแแแ แแงแแก แฎแแแกแแฌแงแแแ bake แแ แ แงแแแแ แแแแขแคแแ แแแแ. แแ แจแแแแฎแแแแแจแ แแแแแฉแแแแแ แแกแแแ แจแแขแงแแแแแแแ:
>> 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 แแแคแแแ แแ แแแ แแจแแแแแ
แแ แแแแแแขแแแแ, ns-3-แแก แแแแแแก แแแกแแฌแงแแแแ, แฉแแแ แแแงแแแแแแแ แ แแแแแแแ แกแแ แแแขแก build.py, แแ แแแกแขแ แฃแแแแขแ bake. แแก แแแกแขแ แฃแแแแขแแแ แกแแกแแ แแแแแแ ns-3-แแก แจแแกแแฅแแแแแแ แแ แแแแแแแแแแแแแก แจแแกแแแแ แฉแฃแแแแแแ. แกแแแแแแแแแแจแ, แแกแแจแแแแแแแ แแกแแแ แแฌแแ แแแแแแ build-แแก แฎแแแกแแฌแงแแก แแแค ns-3 แแแ แแฅแขแแ แแแแแ. แแแค แแแแแกแขแแแแ แแแฃแแแ ns-3 แฌแงแแ แแก แแแแแ. แแแแฎแแแ แแแแแแแก แฃแแแขแแกแแแ แกแฌแ แแคแแ แแแแแแแก แแแ แแแแแ แแแแแงแแแแแแแ nsโ3-แแก แแแแคแแแฃแ แแชแแแกแ แแ แแฌแงแแแแกแแแแก แแแค. แแกแ แ แแ, แแแกแแแ แซแแแแแแแ แแแฎแแแ แแแแแแแ ns-3 แแแ แแฅแขแแ แแแจแ, แ แแแแแแช แแแแแแแแ แแแแแ แจแแฅแแแแแ.
แแก แแ แแ แแก แแแแชแ แแ แกแแญแแ แ แแ แแ แแก, แแแแ แแ แกแแกแแ แแแแแ แแฅแแแแ แชแแขแแแ แฃแแแ แแแฎแแแ แแ แแแแก แแแฎแแ, แแฃ แ แแแแ แฃแแแ แจแแแขแแแแ แชแแแแแแแแแ แแ แแแฅแขแแก แแแแคแแแฃแ แแชแแแจแ. แแแแแ แงแแแแแแ แกแแกแแ แแแแแ แแแแคแแแฃแ แแชแแแก แชแแแแแแแ, แ แแแแแแช แจแแแแซแแแแ แแแแแแแแ, แแ แแก แแแแแก แแแขแแแแแแแฃแแ แแแ แกแแแก แจแแฅแแแ. แแแแฃแแแกแฎแแแแแ, แแฅแแแ แแแแแแแคแแแฃแ แแ แแ แแฅแแแแ แแ แแแฅแขแ แแแแแ แแแแก แแแ แกแแแก แจแแกแแฅแแแแแแ. แแแแแ แจแแแฎแแแแ แแ แแแฅแขแก แแแขแแแแแแแฃแแ แแแแกแขแ แฃแฅแชแแแก แจแแกแแฅแแแแแแ. Waf-แก แ แแ แแแฃแฎแกแแแ, แ แแ แแแ แฃแแแ แแแแแแแแก แแแขแแแแแแ แแแฃแแ แแแแแแแแแแ, แ แแแแแแแช แแแแชแแแก แแแแแแแแแแกแ แแ แขแแกแขแแแก, แแฅแแแ แฃแแแ แจแแแกแ แฃแแแ แจแแแแแแ แแ แซแแแแแแแ:
$ ./waf clean
$ ./waf configure --build-profile=optimized --enable-examples --enable-tests
แแก แแแแฌแงแแแ แแแค แแแแแแแแ แแแ แแแ แแฅแขแแ แแแก แแแ แแ (แแฅแแแแ แแแฎแแ แฎแแแฃแแแแแกแแแแก). แแแ แแแแ แแ แซแแแแแ แแกแฃแคแแแแแแก แฌแแแ แแฌแงแแแแก, แแก แฉแแแฃแแแแ แแ แแ แแ แแก แแแแชแ แแ แกแแญแแ แ, แแแแ แแ แแแ แแ แแ แแฅแขแแแแ (แแกแแแ แแฎแแแแ แฅแแแแแ build แแ แแคแแแแแ); แแก แฌแแจแแแก แแแ แ แจแแฅแแแแ แแแแแแแแแแแแก แแ แแแ แแฅแขแแ แแแจแ แแแแแแ แ แแแแแฅแขแแแแก แคแแแแแแก แแจแแแแแ/. แ แแแแกแแช แแ แแแฅแขแ แฎแแแแฎแแ แแแแคแแแฃแ แแ แแแฃแแแ แแ 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-แแก "แฏแแฃแคแแก ID-แแก แแแงแแแแแ แแแจแแแแแก แแ แแก" แแแกแแงแแแแแแแ. แแก แแ แแ แแก แฉแแ แแฃแแ แแแแฃแแแกแฎแแแแแ แแ, แจแแกแแแแแแกแแ, แแก แคแฃแแฅแชแแ แแแแแฉแแแแแ แ แแแแ แช "แแ แฉแแ แแฃแแแ". แแแแแแแก, แฉแแ แแฃแแ แแแ แแแแขแแแแก แกแแแก แแแกแแฆแแแแ แแแแแแงแแแแ แแแค แแแ แแแแขแ แแ --check-config
.
แแฎแแ แแแแแ แแแแแ แฃแแแแ แแ แแแแแแแแแ แแแแแ แแแแก แแแแกแขแ แฃแฅแชแแแแ, แ แแแแแแช แจแแแชแแแก แแแแแแแแแแก แแ แขแแกแขแแแก.
$ ./waf clean
$ ./waf configure --build-profile=debug --enable-examples --enable-tests
build แกแแกแขแแแ แแฎแแ แแแงแแแแแฃแแแ แแ แแฅแแแ แจแแแแซแแแแ แจแแฅแแแแ 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 configure --disable-python. แแฅ แแ แแก แแแแแ แ แแแแแแแแ แจแแกแแแแแ แ แฉแแแ แแแค.
แแแแแแก แจแแชแแแแแแแก แแแแฃแจแแแแแ
ns-3 แแแแแจแแแแแแ แขแแกแขแแ แแแ แฎแแแแ C++-แแก แฃแแฎแแแก แจแแแแแแแแแแแ, แ แแแแแแแช แฎแแแแแกแแฌแแแแแแ แแแแแจแแแแแก แแ แแก แกแแแ แแ Linux แแ MacOS แแแกแขแ แแแฃแชแแแแแ. แแฃแแชแ, แแ แแแ แแแแแแแแแแแจแ, แแฎแแแ แแแกแขแ แแแฃแชแแแแ แแแแแแแก แแฎแแแ แจแแแแแแแแแแแ แแ แแก แแฎแแแ แจแแแแแแแแแแ แฃแคแ แ แแแแแแขแฃแ แแ แแแคแ แแฎแแแแแแแแก แแแแแ แ. ns-3 แแแแแคแแแฃแ แแ แแแก แแแก build-แก แแกแ, แ แแ แงแแแแ แแแคแ แแฎแแแแแ แจแแชแแแแแก แกแแฎแแ แแแแแฎแแแแก, แแกแ แ แแ, แฎแแแแแฎแแ, แแฃ แฃแแฎแแแก แกแแกแขแแแแแ แซแแแ แแแ แกแแแก แแขแแ แแแ, แจแแแแแแแแแก แแแคแ แแฎแแแแแแ แจแแแซแแแแ แจแแแฉแแ แแก แแจแแแแแแแแ.
แแแแแแแแแ, แแแ แ แแงแ แแแแแจแแแแฃแแ 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-error" แแแ แแแแขแ แแ แฃแแแ แแฅแแแก แแแแแงแแแแแฃแแ แแแแคแแแฃแ แแชแแแก แแ แแก:
$ ./waf configure --disable-werror --enable-examples --enable-tests
แแแแคแแแฃแ แแชแแ แแ แจแแแ แแแ
แแแแแแ แแ แแ แซแแแแแ แแแค แแฅแแก แแแแจแแแแแแแ แแฎแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแจแ แแ แแแแแแ แแ แแแฅแแแแแแก แแฎแแแแ build แคแแแแจแ. แแแแแแแแแ, แแฃ แแกแฃแ แ แแแแแแงแแแแ ns-3 แแแฃแแแชแแแก แคแฃแแฅแชแแแแ, แจแแแแซแแแแ แฉแแ แแแ แแแขแแก แแแ แแแแขแ แ แกแฃแแแ แแแแแงแแแแแแ sudo, แ แแแแ แช แแแแแ แแงแ แแฆแฌแแ แแแ. แแก แแแแแแแฎแแแก แแแแคแแแฃแ แแชแแแก แกแแคแแฎแฃแ แแก แแ แซแแแแแแแก แแ, แแแ แแแแ, แจแแแแซแแแแ แจแแชแแแแแ แแแแคแแแฃแ แแชแแ แจแแแแแแ แแ แซแแแแแแก แแแแแงแแแแแแ, แ แแแแแแช แแกแแแ แจแแแชแแแก แแแแแแแแแแก แแ แขแแกแขแแแก.
$ ./waf configure --enable-sudo --enable-examples --enable-tests
แแฃ แแแแก แแแแแแ แแแค แแแแฌแงแแแ sudoแแแฃแแแชแแแก แแแแแก แกแแแแขแแก แจแแฅแแแแก แแ แแแ แแแแแแก แจแแชแแแ แแแแแ แแแแแแ แแแกแแจแแแแแ root. In แแแค แแ แกแแแแแก แแ แแแแแ แกแฎแแ แแแ แแแแขแ แแแแคแแแฃแ แแชแแแกแ แแ แแจแแแแแแแแแก แกแแคแแฎแฃแ แแแแกแแแแก. แแฅแแแแ แแแ แแแแขแแแแก แจแแกแแกแฌแแแแแ แจแแแงแแแแแ:
$ ./waf --help
แจแแแแแ แแแแงแแคแแแแแแจแ แฉแแแ แแแแแแแงแแแแแ แขแแกแขแแ แแแแกแแแ แแแแแแจแแ แแแฃแ แ แแแแแแแแ แแแ แแแแขแก.
แแกแแแแแแแก แแ แแคแแแแแ
แฉแแแ แฃแแแ แแแแฎแแ, แแฃ แ แแแแ แจแแแแซแแแแ แแแแคแแแฃแ แแชแแ แแแค แจแแแ แแแแแแกแแแแก แแแแแ แแแแก ะธ แแแขแแแแแแ แแแฃแแแ:
$ ./waf --build-profile=debug
แแกแแแ แแ แแก แจแฃแแแแแฃแ แ แจแแแ แแแแก แแ แแคแแแ, แแแแแแแแกแฃแคแแแ. แแแ แแแแขแ -d
แแ แแก แกแแแแแแแ --build-profile
. build แแ แแคแแแ แแแแแขแ แแแแแก แแแแแแแแก, แแขแแแชแแแแก แแ แจแแแแแแแแแแก แแแขแแแแแแชแแแก แแแแแแ แแแแแแแแก แแแแแงแแแแแแก:
แ แแแแ แช แฎแแแแแ, แจแแกแแแ แแ แแขแแแชแแแ แฎแแแแแกแแฌแแแแแแ แแฎแแแแ แแแแแ แแแแก แแแแแแแจแ. แ แแแแแแแแแ แแแฃแแ แแ แแฅแขแแแแ แแฅแแแแ แกแแ แแแขแแก แจแแแฃแจแแแแแ แแแแแ แแแแก แ แแแแแจแ, แจแแแแแ แแแแแแแ แแแแแ แแแจแแแแแแแก แจแแกแ แฃแแแแ (แกแขแแขแแกแขแแแแก แแ แแแ แแแแขแ แแก แชแแแแแแแแแแกแแแแก) แแแขแแแแแแ แแแฃแแ build-แแก แแ แแคแแแจแ.
แแฃ แแฅแแแ แแแฅแแ แแแแ, แ แแแแแแช แฃแแแ แแแจแแแแฃแแ แแงแแก แแฎแแแแ แแแ แแแแฃแ แแ แแคแแแแแจแ, แแแแแแงแแแแ Code Wrapper แแแแ แ:
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;)
แแแแฃแแแกแฎแแแแ, แแแค แแแแแกแแแก build แแ แขแแคแแฅแขแแแก build แแแ แแฅแขแแ แแแจแ. แแฅแแแ แจแแแแซแแแแ แแแฃแแแแแ แกแฎแแ แแแแแแแแแแ แแแ แแฅแขแแ แแ แแคแชแแแก แแแแแงแแแแแแ -โฏ-out
, แแแแแแแแแ:
$ ./waf configure --out=my-build-dir
แแแแก build แแ แแคแแแแแแแ แแแแแแแแชแแแ, แจแแแแซแแแแ แแแ แขแแแแ แแแแแฎแแแแแ แแแแแแแแชแแแก แกแฎแแแแแกแฎแแ แแแ แแแแขแก แจแแ แแก:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
...
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf build
...
แ แแช แกแแจแฃแแแแแแก แแแซแแแแ แแแฃแจแแแ แแ แแแแ แแกแแแแแแแกแแแ แงแแแแ แฏแแ แแ แฃแแฎแแแกแ แแกแแแแแแแก แแแแแฌแแ แแก แแแ แแจแ. แกแฎแแ แแ แแคแแแแ แแแแแ แแแแกแแก, แแแค แจแแแแแแแก แแฎแแแแ แแแก, แงแแแแแคแ แแก แกแ แฃแแแ แแแแแแแแแแแก แแแ แแจแ.
แ แแแแกแแช แแฅแแแ แแแแแ แแแแ 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-แแแ ( แ ++). แแฃแแชแ, แแฅแแแ แจแแแแซแแแแ แจแแชแแแแแ แแก, แ แแแแแกแแช แแงแแแแแ แแแค C++ แจแแแแแแแแแ, 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 แฏแแ แแแ แฉแแแก แกแแแ แแ แแแแแแแแแแแแแก แแแแแงแแแแแแก build แแแ แแฅแขแแ แแแจแ, แจแแแแแ แแแซแแแแแก แแแแแแแแแแแแก แแแแแแแแ แแ แแแ แแแแจแ แแแแคแแแฃแ แแ แแแฃแแ แแแแแแแแแแแแแก แแแแแ. แแกแ แ แแ, แกแแกแขแแแแแ แแแแแแแแแแแแแก แแแงแแแแแแกแแก, แแแ แแ แแ แแฅแขแแแแ แแแแก แจแแแแฌแแแแ, แ แแ แแแแแแงแแแแแ แแฃ แแ แ แกแฌแแ แ แแแแแแแแแแแแ. แแแแฎแแแ แแแแแแก แจแแฃแซแแแแ แแแ แฉแแแ แแแกแขแแแแชแแ แกแฎแแ แแ แแคแแฅแกแแ, แแแแคแแแฃแ แแชแแแก แแ แแก แแคแชแแแก แแแแแชแแแแ --prefix
, แแแแแแแแแ:
./waf configure --prefix=/opt/local
แแฃ แแแแแแแแแแแ, แแจแแแแแแก แจแแแแแ, แแแแฎแแแ แแแแแ แจแแแงแแแแก แแแกแขแแแแชแแแก แแ แซแแแแแแก ./waf
, แแแแแงแแแแแฃแแ แแฅแแแแ แแ แแคแแฅแกแ /opt/local.
แแฃแแแ ./waf clean
แฃแแแ แแฅแแแก แแแแแงแแแแแฃแแ แแ แแแฅแขแแก แฎแแแแฎแแ แแแแคแแแฃแ แแชแแแแแ, แแฃ แแแกแขแแแแชแแ แแแแแแงแแแแแก แแแค แกแฎแแ แแ แแคแแฅแกแแก แฅแแแจ.
แแแ แแแแ, ns-3-แแก แแแแแกแแงแแแแแแแ แแแ แแแแ แแ แแ แแก แกแแญแแ แ ./waf install
. แแแแฎแแแ แแแแแแ แฃแแแขแแกแแแแก แแ แแแกแญแแ แแแแ แแก แแ แซแแแแแ, แ แแแแแ แแแค แแแฆแแแก แแแแแแแแ แ แแแแแแแแแแแแก build แแแ แแฅแขแแ แแแแแ, แแแแ แแ แแแแแแ แ แแแแฎแแแ แแแแแก แแก แจแแแซแแแแ แแแแแแแแแก, แแฃ แแแแ แกแแฅแแแแแแแ แแแแชแแแก ns-3 แแแ แแฅแขแแ แแแก แแแ แแ แแ แแแ แแแแแแแ แแฃแจแแแแแก.
แแแค แกแแแแแ
ns-3 แฌแงแแ แแก แฎแแก แแแแ แแแแแแ แแ แแก แแฎแแแแ แแ แแ Waf แกแแ แแแขแ. แ แแแแ แช แแ แแแแฌแงแแแ แแฃแจแแแแแก, แแแ แแ แแก แแแแขแแ แแแ แแแ แแฅแขแแ แแแจแ scratch/
แแ แฃแคแ แ แฆแ แแแsrc/...
แแ แแแแแ แแ แแก แฃแแแ แแแแฅแชแ แแแค. แจแแแแซแแแแ แฃแแ แแแแ แแแฎแกแแแแแ แกแแ แฎแแ แ แแ แแแแฅแชแแ แแแค แจแแแแแแแแแ แแ:
$ ../../../waf ...
แแแแ แแ แแก แแฅแแแแ แแแแฆแแแแ แแ แจแแชแแแแแแแกแแแแ แแแแ แแแแแ, แแแแขแแ แฃแแแแแกแ แแแแแฌแงแแแขแแแแแแแ แแ แกแแแแแก. แแ แแ แแแแ แชแแแแแฃแแ แแแแ แขแแฅแกแขแฃแ แ แ แแแแฅแขแแ แแก แแแแแงแแแแแ, แ แแแแ แแชแแ emacs แแ vim, แ แแแแแจแแช แแฎแกแแแแ แแ แ แขแแ แแแแแแแก แกแแกแแ, แแ แแ แแแแแแงแแแแแ 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 แกแแ แแแขแแก แแแจแแแแ
แฉแแแ แฉแแแฃแแแแ แแ แแแแ แแแแ แกแแ แแแขแแแก แแแแขแ แแแแก แฅแแแจ แแแค. แแก แกแแจแฃแแแแแแก แแซแแแแก build แกแแกแขแแแแก แฃแแ แฃแแแแแงแแก แแแแแแแแแแแก แกแแแ แแ แแแแแแก แกแฌแแ แแ แแแงแแแแแ แแ แแแแแแแแแแแแแก แฎแแแแแกแแฌแแแแแแแ แแแจแแแแแก แแ แแก. แแ แแแ แแแแก แแแกแแจแแแแแ, แฃแแ แแแแ แแแแแแงแแแแ แแแค แแแ แแแแขแ แแ -โฏ-run
. แแแแแ แแแแฃแจแแแ แงแแแแแแ แแ แกแแแฃแแ แแ แแแ แแแแก ns-3 แแแแแแแแแแขแ Hello worldแจแแแแแแ แแแ แแคแแ:
$ ./waf --run hello-simulator
Waf แฏแแ แจแแแแแฌแแแแก, แ แแ แแ แแแ แแแ แกแฌแแ แแ แแ แแก แแแแแฃแแ แแ แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ แแแจแแแแแก. แแแ แ แแแค แจแแแกแ แฃแแแแก แแ แแแ แแแแก, แ แแแแแแช แแแแแแแฃแจแแแแแก แจแแแแแ แแแแแแแแแแก.
Hello Simulator
แแแแแชแแ! แแฎแแ แแฅแแแ แฎแแ แ ns-3 แแแแฎแแแ แแแแแ!
แ แ แฃแแแ แแแแแแแแ, แแฃ แจแแแแแแแก แแแ แแฎแแแแ?
แแฃ แฎแแแแแ แจแแขแงแแแแแแแแแก แแแคแ แแช แแแฃแแแแแแก, แ แแ แแจแแแแแแแแ แฌแแ แแแขแแแแ แแแกแ แฃแแแ, แแแแ แแ แแฅแแแ แแแ แฎแแแแแ แแแแแแแแแแก "แแแแแ แฏแแแ แกแแแฃแแแขแแ แ", แแแจแแ แแ แแก แจแแกแแซแแแแแแแ, แ แแ [Build-with-Waf] แแแแงแแคแแแแแแจแ แแแแแแ แแแ แแฅแแแแ build-แแก แ แแแแแ แแแขแแแแแแ แแแฃแแแ, แแแแ แแ แแแแแขแแแ แ แแแแแแ แแแแ แฃแแแแ แแแแแ แแแแก. แแ แกแแฎแแแแซแฆแแแแแแแจแ แแแแแงแแแแแฃแแ แแแแกแแแแก แงแแแแ แแแแแแแแแแ แแงแแแแแก แกแแแชแแแแฃแ 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 แแแแฌแแแแก, แ แแ build แแแกแ แฃแแแแฃแแแ, แแแแแแก แแแแแแแแแแแก แแแแแแ แแแฃแ แแแแแแแแก, แจแแแแแ แแงแแแแแก แแแฌแแแแแฃแ แแ แซแแแแแแก แกแขแ แแฅแแแแก แจแแแแแแก แแ แฉแแแแแชแแแแแก แแ แแแ แแแแก แกแแฎแแแก %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 แแ แแแ แแแแแแก แแแกแแจแแแแแ แกแฎแแ แฃแขแแแแขแแจแ, แ แแแแ แแชแแ debugger (แแแแแแแแแ, แแแ) แแ แแแฎแกแแแ แแแแก แขแแกแขแแ แแแแก แฎแแแกแแฌแงแ (แแแแแแแแแ, แแแแแ แแแแ), แแแแแแงแแแแ แแกแแแแกแ แคแแ แแ -โฏ-command-template = "โฆ"
. แแแแแแแแแ, แแแจแแแแ debugger-แจแ แแแ แแฅแแแแ hello-simulator ns-3 แแ แแแ แแแ แแ แแฃแแแแขแแแแ:
$ ./waf --run=hello-simulator --command-template="gdb %s --args <args>"
แแแแแแแแแกแฌแแแแ, แ แแ ns-3 แแ แแแ แแแแก แกแแฎแแแ แแแงแแแแ แแ แแฃแแแแขแก -โฏ-run
แแ แแแ แแแแก แแ แแแ แแแ (แแฅ แแแ) แแ แแก แแแ แแแแ แแแจแแแ แแ แแฃแแแแขแจแ -โฏ-command-template
. แแแ แแแแขแ -โฏ-args
แแฃแฌแงแแแ แแแแ แแ แแ แซแแแแแแก แฎแแแแก แแแแแ แฉแแแ แแแฌแแแ แแแฃแแแแแก โแฅแแแแโ แแ แแแ แแแแก. (แแแแแแ แแ แแแ แกแแ แแแ แแ แแแกแแแก แแแ แแแแขแ -โฏ-args
. แแ แจแแแแฎแแแแแจแ, แแแแแฆแแ แแ แแแ แแแแก แแ แแฃแแแแขแแแ -โฏ-command-template
แแ แแแแแแงแแแแ แแ แซแแแแแแแแก แแแแ แแแ แแแ 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