3 á áááá áá
3.1 á á ááá áĽááł
3.2 á
áľá-áááłáá˝
3.2.1 ns-3 áááąá áĽáá° ááá áááἠá ááá¨áľ áá
3.3 Git á áá áá ns-3 á ááá¨áľ áá
3.3.1 á¤áá ââá áá áá ns-3 á ááŤá áá
3.4 ááŁá¤ ns-3
3.4.1 áááŁáł á build.py
3.4.2 á¨ááááŞáŤ áá ááááŁáľ
3.4.3 á Waf ááááĄ
3.5 á ááá¨á áá ns-3
3.6 áľááŞááąá á áááľ áá
3.6.1 á¨áľáĽáá ááľáá ááááŽá˝
3.6.2 áá¨á
3.6.3 á¨áľáŤ áááŤ
áááŤá 3
áááá
áá ááĽáŤá á ááŁá˘á ns-3 á áá á¨ááŤáá á áŽáááŠá°á áĽáá˛ááá ááááááľ á¨áłá°á ááᢠá¨áá°áá ááľá¨áŽá˝áᣠá áľá áááłáá˝áᣠns-3á áĽáá´áľ ááááľ áĽáá°ááťáᣠns-3á áĽáá´áľ áĽáá°ááááĄáŁ áĽá áááŁáłáá áĽáá´áľ áĽáá°áááአáĽá ááá ááŽááŤáá˝á áĽáá´áľ áĽáá°ááŤáŤááą áá¸áááá˘
3.1 á á ááá áĽááł
ᨠns-3 á˛ááá°á áĽáá° á¨áľáĽáĽá á¨áśááľáá á¤á°-ááťáááľ áĽáááľ áá á¨á°á°áŤáᢠá áľáĽá°áŁ áá áľ á¨á°á áá ááŽááŤáá˝ áŽáľ á¨ááá á¤á°-ááťáááľ áá á°áŤáááᢠá¨C++ ááá Python ááŽááŤááá ááááá˝ áĽá ááŽááŤáá˝á áááťá áŤáááááá˘
Ns-3 áĽáá° ááá áŽáľ áá°áŤáŤáᣠáá áááľ á ááááŞáŤ á¤á°-ááťáááľá áááááŁáľ áĽá á¨á°á áááá ááŽááŤá áááááŁáľ á¨áłááá áľáááľ á¨áśááľáá áááľ á áŤáŁá˘ ááá¨á áááŁá áááľ ááᢠá ááá á°á¨áᣠns-3 áá ááľ á¨á°áá°á áľáááľ ááá-á¨á°á°áŠ á¤á°-ááťáááľ áá°áŤá áá˝ááᣠáĽá áá°ááľ á áá ááááľ áá°áŤá áá˝ááᢠá áá áá áĽá á°á áááá˝ á áŤáą ns-3 á ááľá°áŤá¨á áľáŤá¸áá áá°áŤá ââáľááá á¤á°-ááťáááľá áááááŁáľ á¨ááá áŽáľ ááአá áá ááᢠááľááá° ááááá˝ ááá á¨áá á¤á°-ááťáááľá áĽá ááŹáá˝á á¨ááá á áĽáŤ áá ááá á°á ááĽáŤáľ á¨áááá á¨áá áĽáŁáá á¨ááľáł áááŞáŤ ááááŠá áŤááᢠns-ááá˘áá˝.
á ááá áᣠns-3á áááá¨áľ áĽá áááááŁáľ áśáľáľ ááááśá˝á áĽáááá¨áłááᢠá¨ááááŞáŤá á¨ááá áŁá˘áŤ áá ááá áááľ ááá¨áľ áĽá ááááŁáľ ááᢠááá°áá á¨áá á¨áłá ns-3 ááŤá á¨ááľááľ áľáŞáśá˝ á ááá˝á ááá¨áĽ áĽá áá°áĽá°áĽ áá. áśáľá°áá á ns-3 á°á¨á᪠á áĽáŤáá˝á áááŤá á°á¨á᪠á¨áááŁáł ááłáŞáŤáá˝á áá áá áá. ááŁáŞáŤááš áľáá˝ áľááááŤáŠ áĽáŤááłááłá¸áá áĽáááááá˘
áááľ áŤáŤá áą á¨ááááľ á°á áááá˝ ááá ns-3 á¨áĽá á á áľá°áłáłáŞá áĽáá°áá áá ááá˝ á¤á°-ááťáááľ á áĽá á á ááá¨á á áĽáá ááŤáľáĄ áá˝ááᢠáá°ááŤáŠ á¨ááááľ áľáááśá˝ (áááłá á´á˘áŤá) áááľáŽá˝ ááŹáá˝ á˘ááŠáᣠá áĽááááš á°á áááá˝ áá¨á¨áťá¸á á¤á°-ááťáááľá á ááľá á ááľá¨á áĽá ns-3á áŤáłá¸á áĽáá°áá ááááŁáľ áľáááŁá¸á á¨ááá áŽáľ ááááą á áá ááᢠá áá ááááŤáľ, á¨ááአáá á ááŤá áá áĽáá°áŠáŤáá.
áá áĽááááš áá°áá áŞáŤáá˝ ns-3 ááĽáśá˝ áĽá á áŤáľáááá, áŤáá°ááá° á¨á°á áá áá፠ááá áá ááá¨áŤá.
3.2 á áľá-áááłáá˝
á¨áááᾠᨠns-3 á¤á°-ááťáááľ á á ááá áľáĽáľáĽ á áśáľá°á ááá á¤á°-ááťáááľ áá á ááŤáł áĽááááśá˝ á áá¸áᣠááá áá á á áĽááá ns-3 ááááŁáľ áĽá ááĽá á¨á፠(áĽááá áá á ááŁáŞ á¨á°áŤá) á áŤááľá á áá°áá áĽá
á áá ááá áá˝áá-C ++ áá áá¨áŞáŤ ᣠPythonᣠá¨ááá áŽáľ á ááłá (áááłáᣠvim, á˘ááŤáá˝ ááá áŞáá ááŞáá) áĽááŁá¨áááľ áá¨ááťáá˝ áĽá
á áá á¨áááŁá¨ Git áľáŞáľ ááĽáĽá áľáááśá˝á˘ á áĽááááš á¨ááááŞáŤ áá á°á áááá˝ áá
áŤá¸á á ááłááľ ns-3 á¨áá áŁá
áŞáŤáľ áĽáá°áá°á á¨ááá áá¨áá
á áŤáľáááá¸áá ááá áá áá ááŤáá ááááá ááŽáááą áĽá á áá áááŽá˝á áĽá áá´áá˝á á¨áŤá á᪠áá°áŁáᢠá¨áá
áá˝ á ááą á¨ááŤá áá˝ áá ᣠáá°ááŤáŠ áľáááśá˝ á¨ááŤá áááŞáŤáὠᣠá áá¨á°ááľ áááá á˘
á¨áá á᪠á áľá áááł ááá á¨á°áááą ns-3 á ááŤáŽá˝á ááá°áá á¨áľááš áĽá áá˝ áĽáá°ááŤáľááá áŤáĽáŤáŤá áĽá áĽáá˛áá á ááááľ ááá áááŚá¤áľ á¨á°áááą áŁááá˝ áá áááŤá áĽá á áá á¨ááá áľáááá˝á áá°áŁáá˘
á áá
á ááŁá ᨠns-3 wiki áá˝á ááá áááá áľá
ᨠáá˝ áá°áľ áľá˝ááá˝ááĄ-
á¨ááłáŞáŤ áĽá á/áľáŞáľ
- C ++ áá áá¨áŞáŤ
clang++ ááá g++ (g++ áľáŞáľ 4.9 ááá á¨á፠á áá) - áááś
python2 áľáŞáľ >= 2.7.10ᣠááá python3 áľáŞáľ >=3.4 - Git
ááááá á¨á áἠáá áľáŞáľ (ns-3 á GitLab.com áá áááľá¨áľ) - áŹáá
ááááá á¨á áἠáá áľáŞáľ (ᨠns-3 áááľá áááááľ) - bunzip2
ááááá á¨á áἠáá áľáŞáľ (ᨠns-3 áááąá áááááľ)
á¨ááááá ááŁáŞ áľáŞáľ áááá°á˝ áá°áᥠpython -V
. ᨠg++ áĽáŞáąá áááá°á˝ áá°áᥠg++ -v
. áááá¸áá ááłáŞáŤáá˝ á¨áá°á ááá á áŁá áŤá¨á á¨áá áĽáŁááá á ns-3 wiki áá˝ áá áŤááá á¨ááŤá áááŞáŤ áááá¨áąá˘
á¨á áá á áá á ááŁá˘á ááááľáᣠáááŚá¤áľá ááá ááááľá á˘ááŠáá°áá áĽáŤáá° áĽáá°áá áĽá á˘áŤááľ á¨áá á¨á°á ááąáľ ááłáŞáŤáá˝ áĽááłááľ áĽááááłááá˘
3.2.1 ns-3 áááąá áĽáá° ááá áááἠá ááá¨áľ áá
á¨á áἠáááá ᨠns-3 áĽáľáá˝á áĽá á¨áĽá á áľáŞáśá˝á ááá¨áľ áĽá ááá¨á ááááá á á˛áľ á°á áá áá á¨áĽááá á áŤááľ ááᢠns-3 áááśá˝ áĽáá° á¨áłáá ááá áá á°áŽá˝ ááłá°ááᣠá ááłáá´á ááŁáá tar tarball. tar tarball áĽá áááá˝ á á ááľ áá á¨ááŁááŠá áľ áአá¨áśááľáá áá á°á á áá¸áľ ááᢠáá á°áŠ áĽááá áá á¨áłáá ááᢠns-3 á¨ááľááť áá°áľ á tar tarball ááá ááᣠá ááľ áááľá ááá¨áĽáŁ ááá¨áľ áĽá áááá áĽáť áŤáľáááááłáá˘
áĽááľáᣠáĽáá° á°á ááᣠá á°á áŤá á¨á áŤáŁá˘ áá፠ááľáĽ ns-3á ááááŁáľ áĽáá°áááá áĽááľáĽ á¨áĽáŤ áŚáł. á¨áá¨á°ááá áá° ááááľ áŽááśá á ááľááŁáľ á¨áááááá á¨áľáŤ á á ááááľ áá˝áá (á áĽááἠá°áá˘áá á¨áľáŞáľ ááĽáŽá˝ á áá°áŤáľ)
$ cd
$ mkdir workspace
$ cd workspace
$ wget https://www.nsnam.org/release/ns-allinone-3.29.tar.bz2
$ tar xjf ns-allinone-3.29.tar.bz2
á¨áá áĽá á áá á¨áááá áááá፠áľáŠá¨áľ ááľáĄ wgetáááŽá˝á á¨á áááá¨áĄ áááá¨áľ á¨áľáĽáá ááľáá ááłáŞáŤ ááᢠáĽáąá áŤááŤááľ ááá á áłá˝áá áá áá áá˝ááá˘
áĽááá á áĽááááá˝ á áá¨á°á áá° ns-allinone-3.29 áá፠áááľáľááłáᣠáĽá፠áĽá áááá˝á áĽá áááŤáá˝á áá¨áľ á ááĽááľ
$ cd ns-allinone-3.29
$ ls
bake constants.py ns-3.29 README
build.py netanim-3.108 pybindgen-0.17.0.post58+ngcf00cc0 util.py
á áá áá°á¨áłá ns-3 áľáááľá áááááŁáľ ááá áááľ áĽá áá° ns-3 áááŁáł ááá áááľ áá˝ááá˘
3.3 Git á áá áá ns-3 á ááá¨áľ áá
ᨠns-3 áŽáľ á Git áá¨ááťáá˝ á GitLab.com áá ááááá˘
á¨ááľ áá¨ááťáá˝á áá áá ááááá ááá ááááľ á áŤáŁá˘áá áááŤáľ ááá ááááľ ááᢠns-3-á ááá. áá á áĽááľ áĽá á áá á¨áá ᨠns-3 ááĄáľ áľáááśá˝á ááŤá áĽá áá°áĽá°áĽá á¨ááŤáľá°áłáľá á¨áľááŞááľ áľáĽáľáĽ ááᢠáááľ á á˛áľ á¨áááᣠ"ááá" áĽá "ááá" á¨áááľ áááľ ááĽááľá á¨ááŤáá ááá áá˝ááᢠáĽáá°á፠á¨áá á 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
áĽáŁááá áľááŞááľ áĽááłá áŤáľá°áá ááá¨áľ.py, áĽáąá á á°á¨á᪠ns-3 áĽá á°ááłá áŽáľ áŤááŁáᢠáĽáá áá፠á áá ᥠáá á¨á áἠáááá ns-3 áááľ á á˝á á° ááś á áááľáĄ
$ python download.py
ááá áŁáá˛áŤáá á áá áá ns-3 áááá
á ááááŁá -n
á¨áááá፠ááĽáŠá ááááá¨áľáĄ-
$ python download.py -n ns-3.29
á¨áá á°á¨á á áá áá° áááŤá áááą ns-3-á ááá á°á¨á᪠áá¨ááťáá˝ ááááłá ns-3, áááá, áá˘ááá и netanim.
á ááá¨á°
áášá
áĄáĄááą16.04 áŁáá áá˝á áá áľáááá áá°áá
ááá¨á áá á¨áĽááĄ- $ sudo python3 download.py -n ns-3.29
(á¨áá
á áá á¨á áľá°ááá ááľáłááťáá˝).
3.3.1 á¤áá ââá áá áá ns-3 á ááŤá áá
á¨áá áŤááľ áááľ áá´áá˝ (á¨ááá áááἠááá áá¨ááť ns-3-á ááá á ááľ á áŠá) á áŁá ááá á¨áááá ns-3 áááľ á¨áĽá addons áá áááááľ á áá áá¸áá˘áá˘ááá ᨠPython áá°áŞáŤáá˝á ááááá¨áľ áĽá netanim áá ááłá¨ áá¨áĽ á ááá˝á). á ááŁáŞ á¨áá¨á á áŚáľá°áá áá¨ááť á ns-3-allinone ááŁáá áááá.
áááá á ns-3 ááŽáááľ á¨á°ááá á¨á ááŤáł áá¨ááťáá˝ á¨áśááľáá áááŁáł á¨á°ááá ááłáŞáŤ ááᢠáááá ᨠns-3 á¨áĽáľááľ áľáŞáśá˝á áááááľ áĽáá˛áá áĽáá° á áŤáŁá˘ áŤá ᨠns-3 áľáááąá áá°á¨áłá áľáŞáľ áááá¨áľ áĽá áááááŁáľ ááŤáááá áá˝áá á¨ááĽáł áŽáľ á áááá, CradleNetwork Simulation Cradle, á á˛áľ ᨠPython áá°áŞáŤáá˝á áĽá á¨á°ááŤáŠ ns-3 "áá°áá áŞáŤáá˝á" á¨ááá á á˝ááł.
á ááá¨á°
CradleNetwork Simulation Cradle á ááľááá á˛ááá°á ááľáĽ áĽááá°á á¨TCP/IP á ááłá¨ áá¨áĽ áááá˝á áĽááľáľá áá á¨ááŤáľá˝á áááá ááá˘
á¨áĽááľá ns-3 áááľ á¨áá ááá á°á¨á᪠áŁá áŞáŤáľ áĽáá˛áá¨á á¨á á áᣠáá á á¨ááŤá ááááľ áá¨á°á áá˝ááá˘
á á áἠᨠns-3 áááśá˝ áááá áá° áŹáá áááá á°á¨ááŻá. áááą á áááá á áľ áá á¨á ááá á¨áśááľáá áľáŞáśá˝ áĽáá˛áŤáááą á¨ááŤáľá˝áá á¨ááááŞáŤ áááá áŤáŤáľáłáᢠáááľá, áááłá, áľáŞáľ ááááᨠns-3.29 áááľ áá á¨áá°áŤáᣠáá፠ᨠns-3 áááľ ááá á¨á፠á ááľ áááá˝á ááááŁáľ áĽá á áá ááá áá˝ááᣠááá áá á áá ááááááľ áááá˝á ááááŁáľ áĽá á áá ááá á áá˝áá (á¨áĽá á ááááŤá ááá á¨áá) bakeconf.xml á ááááá)á˘
á¨á áἠá áááá ááááľ áá˝ááᢠááááá¨áá¨á°ááá áľááá áá° ááááľ áŽááśáá ááľáĽ á ááľááŁáľ (ááľ áĽáá°áŤá á áá°áĽ)
$ 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
áĽá á¨áááá áľááŞááśá˝á áĽáá°áŤá áἠáá áᣠá¨á°á°á¨áá á¨áááá áááᢠáááá áĽá á¨á¤ááľá¤áá¤á áá á áááᢠááŁáŠ áĽááá áĽááá á áľááŞááśá˝ áááá¨áľ áĽá á¨áá¨áĄáľá ᨠns-3 áľáááľá áááááŁáľ ááᢠá ááŤáł á¨áá ááľ á˘áááá˝ áááááĄ-
-
ns-3.29: á¨áááááŤá áá á¨ááááľ ááá; á áłááŚá ááľáĽ á¨áááááľ áá á°ááłáłá á¨áá áááá˝á áŤáááłá;
-
ns-3-dev: á°ááłáłá ááá, ááá áá á¨áááľ áá áŽáľ á áá áá;
-
ns-á ááá-3.29: ááá˝ á°á¨á᪠áŁá áŞáŤáľá á¨ááŤáŤáľáľ ááá áĽáá° ááá áŤáá˛áá áĽá á¨á ááłá¨ áá¨áĽ ááľáá°á ááŤáľáᣠáááľ áá°áľ á ns-3á˘
-
ns-3-á ááá: á¨ááá á¨á°áááá áľáŞáľ áá á°ááłáłá ááá á á ááľááááľ áŽáľ áĽááá˘
á ááá¨á°
á á
áŤáľáá - áŤáá°áŽá˝á áááá á ááąá áśááľáá á ááá´áá¸áá˘
áááľ áá°áľ á áá¨á áá¨áĽ áá á áŤáá°áŽá˝ áĽá áľáážá˝ á¨áá°ááá áá¨ááá˝á á¨áááá á áá°áľáŁ á áśááľáá á¨á°ááḠá¨á ááłá¨ áá¨áĽ á´ááááá á°ááŁáŤá áááľá¨á ááŽáśáŽá ááá˘
á¨á áá á¨áĽáľááľ á
á˝á áłá áá˝ áĽááł (áŤáá°ááá) ns-3 á áĄ
ááá˘ááš áĽááá á áá¨ááťáá˝ á á°ááŁáŁá á¨áľáŤ á á°á á°á¨á°á áááľááἠááááŤáᣠááá áá á áááľ á áŤáŁá˘ ááľáĽ áá¸á áĽá áŤáá°ááá áŽáľ ááááᣠáľááá á á˛áľ áŁá áŞáŤáľá ááá áá áŤáá°áĄáŁ ááááá á¨á°ááááá ááá¨áĄá˘
á¨áá¨á áá¨ááťáá˝á áááá á áá°áľ ááá áá° ns-3 á¨á°áááá áľá¨-áá˝ á áááľ á¨áŽáąá á¨á
áἠáá áľáŞáľ ááááľ áá˝ááá˘
á áá, á¨ááŤáľááááá 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
áá ááŽááŤáá áŤáľáááŁá áááá.py áá° áźá áąáŤ áĽá ááá˝ ááŽááŤáá˝ á¨áá áŤá¸áá á°ááááá˝ áĽá á¤á°-ááťáááľ áĽáá˛áŤáá áŤáľá˝áá¸áá áááá. á á ááłááľ á¨á á ááá áááłáá˝ áááá, á¨áá á¨á°ááášáľ ᨠPATH áĽá PYTHONPATH ááźáľ á áŤáľáááá, ááá áá ᨠns-3-allinone (á¨á°á¨á᪠áĽá áá˝ áá) áá ááá ááááŁáľ áĽááá áá áŤáľááááá.
áá° á¨áľáŤ áááŤá áááą áĽá á áŽááśá ááľáĽ á¨áá¨á°ááá áŤáľááĄáĄ
$ ./bake.py configure -e ns-3.29
á ááá á áĽáá ááááᢠáááá á¨á°ááŤáŠ áááá˝á áááŤá á á ááłáŞáŤáá˝ áĽááłáá áŤá¨áááĄ. á°áááĄ
$ ./bake.py check
á¨áá¨á°ááá á¨áá°á ááá áá¨áľ á ááĽá á˘
> Python - OK
> GNU C++ compiler - OK
> Mercurial - OK
> Git - OK
> Tar tool - OK
> Unzip tool - OK
> Make - OK
> cMake - OK
> patch tool - OK
> Path searched for tools: /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin ...
á á°ááá áĽáá° MercurialáŁCVSᣠGit áĽá Bazaar áŤá á¨á°áá ááłáŞáŤáá˝ áŽáąá áĽááľááá áľáááŤá°ááá á áá á°á¨á á áľááá áá¸áᢠá áá áá á¨áá°ááľá ááłáŞáŤáá˝ ááľáááľá á á°ááá°á ááááľ ááŤá (áĽáá´áľ áĽáá°ááŤáá áŤáá) ááá ááĽááłáł á¨áľáááľ á áľá°áłáłáŞáá áŤááááŠá˘
á ááá á áśááľááŠá áááá¨áľ ááááŠáĄ-
$ ./bake.py download
áá¤áą áĽáá°áá áŤá ááá ááá á áá áľ-
>> Searching for system dependency setuptools - OK
>> Searching for system dependency libgoocanvas2 - OK
>> Searching for system dependency gi-cairo - OK
>> Searching for system dependency pygobject - OK
>> Searching for system dependency pygraphviz - OK
>> Searching for system dependency python-dev - OK
>> Searching for system dependency qt - OK
>> Searching for system dependency g++ - OK
>> Downloading pybindgen-0.19.0.post4+ng823d8b2 (target directory:pybindgen) - OK
>> Downloading netanim-3.108 - OK
>> Downloading ns-3.29 - OK
áá áááľ áśáľáľ áááŽá˝ ááá°áá áááľ áá. á áá áá° ááá áááŤá áááą áĽá ls áá°ááĄ; áá¨áľ á ááĽá áĄ-
$ cd source
$ ls
netanim-3.108 ns-3.29 pybindgen
á áá ᨠns-3 áľáááľá áááááŁáľ ááá áááľá˘
3.4 ááŁá¤ ns-3
áá áĽáá° ns-3 á ááá¨áľáŁ ns-3á áááááŁáľ áĽá ááááśá˝ á áᢠá á˝áááľ ááá°áĽá áľ á¨áááááá ááá ááá ns-3 á¨á°á°áŤáá á¨áááŁáł ááłáŞáŤ á áá áá áá ááá¨áá á áłá˝ á°áĽáŤááˇá. á áĽááááš á°á áááá˝ á áĽá¨á áá°áŤá áá, ááá áá ááááá ááá á¨á áá ááľáĽáľáĽ áááŁáłáá˝á ááá°áŤááľ á¨áá¨áąááľ áĽááľ ááš áľááŞááśá˝ á áᢠáľááá áĽáŁááá á¨ááá áĽá á ááľ áá, á°ááá¨áľ áááŁáł.py áĽá áá áľáĽá°áŁ áááá.
3.4.1 áááŁáł á build.py
áĽáŁáá áἠáá á! áá á¨áááŁáł á°á¨á á¨áá áĽáá°á°áááá á¨á°ááá ááá áááἠá¤áľ áľáŞáľ áĽáť áááá; áĽá á git ááá bake á ááá¨á°áá˘
á¨áááá፠áááἠáá á˛á°áŠ tar tarball, á ááľáĽ ns-3-á ááá áááášá áááŁá á ááá ááŤá°áá á¨áá˝á ááš áľááŞááľ á áᢠbuild.py ááŁááᢠáá ááŽááŤá ááŽáááąá á áŁá á áá á áá ááááľ áŤááá áááłá. ááá ááᣠá¨á áá á¨áá áááá áĽá á¨ns-3 áá ááľáŤáľ á áĽáááá áá ᨠns-3á á¨áŤáąá á¨áááŁáł áľáááľ Waf áá ááá á¨ááŤáŤáľáľ áááá áĽá á áá áááŞáŤ ááľáĽ á áá áá áá°ááááá˘
á°á á áá áŤáá¨áą tar tarball, á¨ááŤá á áĽááľá áá፠ááľáĽ ~/á¨áľáŤ áŚáł á¨áá áľá áŤáá áá፠ns-á ááá-3.29. á¨áá¨á°ááá á áľááŁáĄ
$ ./build.py --enable-examples --enable-tests
á˛á°áá áááŁáł.py á áá áá áá¨áŞáŤ áľáá ááľ ááľáĽ áĽá á áá á¨áá ááłááá˝á áĽá áá¨áŤáá˝á áááááŁáľ á¨áľáĽáá ááľáá ááááŽá˝á á°á á ááá áłáᣠáĽááá á á ááŁáŞ á ns-3 ááľáĽ á áá°áááĄáᢠá ááŁáŞ, ááŽááŤá áááá á¨ááááľá áááá˝ ááááŁá. á¨á፠á¨ááá ns-3 áŤá ááłááá˝ áĽá áá¨áŤáá˝ ááááŁáľ ááá ááľáŤá á¨ááááá áááá˝á áááá áá˝ááá˘
á¨áŤáá¸áá á¨á°ááŤáŠ áááá˝ á ááááŁá áľ áá á áľááŞááą á¨ááłáŠ áĽá á¨áá áá¨áŞáŤ á¨áá¤áľ áááááśá˝á áłáŤáá ᢠá ááááŞáŤ áľááŞááą á áááá áááááŁáľ ááááŤáᢠnetanim, á¨ááŤá á áľááłá áááŹá°á áá˘ááá áĽá á áá¨á¨áťá 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 á¨ááá ᨠPython áá°áŞáŤáá˝á ááá á á¨ááá áĽáť áŤáľááááᢠáá áĽááááš á°á áááá˝ áá á áŤáľáááá (á˘áŤááľ ns-3 áĽáľáŞááአáľá¨áľ)ᣠáľááá áĽáá°áá á áááľ ááľá ááááŤáá˝ áááá á˝á ááŁá áá˝ááá˘
áŤáá°áłáŤ á¨áá¨á°áá áľááá áľáá á áĽááá˝ ááá áá°áĽááłááĄ
$ ./bake.py show
áááááŁáľ áĽá¨áá¨áŠ áŤááľ á¨ááŹáá˝ á¨á°ááŤáŠ áĽáááá˝ ááá¨ááŤáá˘
3.4.3 á Waf ááááĄ
áĽáľá¨áá ááĽáĽ áľá¨áľ, ns-3 á áááááŁáľ, áááąáá áľááŞááľ áĽáá áááá áááŁáł.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 áá°áá°á ááŽááŤáá˝ "á¨áĄáľá ááłáá፠á runtime á ááá
" á¨áááá suid á˘áľ ááááááľ. á ááŁáŞááľ á áááá áĽá áľááá
áá
áŁá
᪠áĽáá° "á áááá" áá ááłáŤá. á áá¨á¨áťá á¨áá á ááŤáŽá˝á áááá áááááľ á°á áá áá á¨áááŞáŤ áá --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
á¨áá áŤáá áááł áááŁáł.py ááááŽá˝áá áá°ááá --enable-examples
и --enable-tests
, áá ááá˝ á ááŤáŽá˝ áá á ááĽáł á áá°ááá. áááłá áá
á áá°áŤááĄ-
$ ./build.py --disable-python
áááš áĽáá°áá¨á°áá áááá
build.py: error: no such option: --disable-python
ááá áá, áአáŚááŹá°á - - á°á¨á᪠áááŞáŤáá˝á á á áŠá áááá ááŤáááá áá˝áá áááľááá á¨áá áŤáá ááá á¨áá¨á°áá áľááá áá°áŤá:
$ ./build.py -- --disable-python
ááááŤáąá áááá áľááá áŤáááŤá ./waf áá á --á á°ááá-python. áľá á ááłááľ á°á¨á᪠á¨ááá˘áŤ áááŽá˝ áĽáá á áᢠáá.
á¨áááŁáł áľá á°áśá˝á ááľá°áááľ
ns-3 á¨á°ááááľ á á፠ááááľ áĽá áááŚá¤áľ áľáááśá˝ áá á ááááá áľ áá á ááá á¨á áἠááááš á¨C++ áááá áŞáŤáá˝ áá ááá¨áŤáᢠááá ááᣠá áá áá°áľáŁ á áłá˛áľ áľáááśá˝ á¨á áłá˛áľ á áááŁáŞáá˝ áá áááááᣠáĽá áĽááá á áłá˛áľ á áááá˝ áľá ááľá ááááŤáá˝ á¨á áá á ááá ááááᢠns-3 áááŁáłáá áááá ááľá ááááŤáá˝ áĽáá° áľáá°áśá˝ áĽáá˛áá áŤáá á¨ááᣠáľááá á ááłááľ áá á¨áᨠáľáŞáľ á á á˛áľ á˛áľá°á áá áĽáŤááą á¨ááᣠá¨á áááŁáŞ ááľá ááá፠áááŁáłáá ááŤááá áá˝ááá˘
áááłáᣠá¨áá áá°á ᨠnsâ3.28 á Fedora 28 á¨á°ááá á˛áá áá á á á˛áľ áá áľáŞáľá áŤáŤáľáłá gcc (gcc-8 áĽ.á¤.á .). á¨á°ááááá ns-3.28 ááá áá°ááľ áľáŞáśá˝á á Fedora 28 ááááŁáľ Gtk2+ á¨á°áŤá á¨áá¨á°áá áľá á°áľ áá¨á°áłáá˘
/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h:59:8: error: unnecessary parentheses ,!in declaration of â__gtk_reserved1â [-Werror=parentheses] void (*__gtk_reserved1);
ᨠns-3.28.1 ááᎠá á°ááááľ ááľáĽ áá áĽááá á á˝ááŽá˝ ááááłáľ á ááľ á ááŤá á á. á¨"-Werror" áŁáá˛áŤ á g++ áĽá á áĽáá++ áá áááá áá áŤá°ááááᢠáá á¨"--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
. á¨áááŁáł ááŽááá á¨áááἠááľáłááťáá˝áᣠáá¨áááŤáá˝á áĽá á¨áá áá¨áŞáŤ ááťáťáŤ áááá˝á á á ááá áááŁá áŤááĄ-
áĽáá°áááá¨áąáľ ᣠáááἠááľáłááťáá˝ áĽá áá¨áááŤáá˝ á áľá á°áľ áááŁáłáá˝ ááľáĽ áĽáť ááááᢠá¨ááá¨á¨á ááááľ á¨áĽááľáá áľááŞááľ á á áŤá áááł ááłá áᣠá¨ááŤá á°á°ááá áŠáŤáá˝á (ááľáłáľá˛ááľ ááá áááŞáŤ áááŚá˝) á á°ááťá¸ á¨áááŁáł ááá፠ááľáĽ ááľá¨á ááá˘
á á°áá°á á¨áááŁáł ááááŤáá˝ ááľáĽ áĽáť ááŽáĽ áŤáá áľ áŽáľ áŤáááľáŁ 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;)
ááŁáŞ áŁ áá áŚáłáá˝ á áááŁáł áá፠ááľáĽ á
ááśá˝á ááááŁáᢠá ááŤáŠá á áá áá á¨á°áᨠá¨áá¤áľ áá፠áááá˝ áá˝ááᢠ-âŻ-out
, áááłá:
$ ./waf configure --out=my-build-dir
áá áá á¨áááŁáł ááááŤáá˝ áá á ááŁáá á ááá á á°ááŤáŠ á¨á ááĽá á ááŤáŽá˝ ááŤá¨á áááŤá¨á áá˝ááá˘
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
...
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf build
...
á áĽáŤááłááą áá á¨á áἠáááá áľáĽá°áŁ áĽáá°áá ááá áłáŤáľááá á¨á ááŤáł áľáĽá°áŁáá˝ áá áĽáá˛á°áŠ áŤáľá˝áááłáᢠáá° áá ááá፠á˛áááŠáŁ áá áááá ááá áá á áá áłáŤá áá á áĽáąá áĽáť áŤá áá áŤáá˘
á¨áááŁáł ááááŤáá˝á á áá ááááľ á˛ááአá áĽáŤááłááą áá á°ááłáłá á¨áááá á ááŤáŽá˝á áááľá áľ áá ááá á ááĽááľá˘ á ááŤáł á¨á áŤáŁá˘ á°ááááŽá˝á áááá áľá á°áśá˝á áááľáááľ áá¨áłááłááĄ-
$ export NS3CONFIG="--enable-examples --enable-tests"
$ export NS3DEBUG="--build-profile=debug --out=build/debug"
$ export NS3OPT=="--build-profile=optimized --out=build/optimized"
$ ./waf configure $NS3CONFIG $NS3DEBUG
$ ./waf build
...
$ ./waf configure $NS3CONFIG $NS3OPT
$ ./waf build
áŽáááá°áŽá˝ áĽá áŁáá˛áŤáá˝
á¨áá áŁááľ ááłááá˝ áá ns-3á áááááŁáľ á¨áá˛á˛ á¨ááááá C++ áá áá¨áŞáŤ áá ááá ( á° ++). ááá áá, á¨áá ááá áľá ááá¨á áá˝áá áá C++ áá áá¨áŞáŤáŁ á¨CXX á áŤáŁá˘á á°áááá á áááá˝á˘ áááłáᣠC++ compiler Clangáᣠclang++á ááá áááŁ
$ CXX="clang++" ./waf configure
$ ./waf build
á á°ááłáłá ááááľ áááá áá˝áá áá á áá áá á¨á°á¨ááá áĽáá á ááá áá distcc:
$ CXX="distcc g++" ./waf configure
$ ./waf build
áľá distcc áĽá á¨á°á¨ááá áľáĽáľáĽ á°á¨á᪠áá¨á á á°ááľ ááá ááľáĽ á ááŽáááą áá˝ áá ááá áá˝áá. ns-3á á˛áŤáá አá¨áá áá¨áŞáŤ áŁáá˛áŤáá˝á ááá¨áá á¨CXXFLAGS_EXTRA á áŤáŁá˘ á°áááá áá ááá˘
á ááĽá
áá á áľáááą áá á á°ááŤáŠ áŚáłáá˝ áááĽá¨áŞáá˝á áááŤá ááŤáááá áá˝ááᢠá ááŁáŞ, á¨á°á ááአá¤á°-ááťáááľ áĽá á°ááááá˝ á áááŤá ááľáĽ áááá ááááŁáľ, áĽá Waf á¨áĽááá á á¤á°-ááťáááľ áĽá á áľááááá˝ áŚáł áľáááŤáá , á¤á°-ááťáááľá áá áŚáł ááŤá á áŤáľáááá.
á°á áááá˝ á¨áááŁáł áá፠áá ááŤáá á¨áá¨áĄ áľáááá áááľ áá˝ááᢠ./waf áŤá. á¨ááŤá ááŁáŞ á
áľá á
áĽáŤ ááᢠ/ usr / localáľááá
./waf áŤá ááľáĽ ááŽááŤáá˝á áááá / usr / local / bin, ááľáĽ á¤á°-ááťáááľ / usr / local / lib áĽá á¨áŤáľá áááá˝ áá° ááľáĽ /usr/á áŤáŁá˘/á áŤá°áľ. á¨áąáá á°á áá ááĽáśá˝ áĽááá áá á¨ááŁáŞ á
áľá á
áĽáŤ áá áááá á á ááŁá¸áᣠáľááá
á¨á°ááá°á áľáĽáá ááááᢠsudo ./waf ááŤá. á˛ááá Waf á ááááŞáŤ á áááŁáł áá፠ááľáĽ áŤááľá á¨á°áአá¤á°-ááťáááľ ááá áá ááááŁáᣠá¨ááŤá á á áŤáŁá˘á á áŤáŁá˘ áá°á°ááአá¤á°-ááťáááľ á áááľá°á ááááľ áá á¤á° ááťáááľá áááááᢠáľááá
á¤á°-ááťáááľá á á˛áľá°á áá á˛áá áľááááááš á¤á° ááťáááľ áĽá
á áá áĽá¨áá áááá¸áá áá¨ááἠáĽáŠ á á áŤá ááᢠá°á áááá˝ á áááá áá á ááŤáŠá á ááá á á°áᨠá
áľá á
áĽáŤ áááŤá ááá¨áĽ áá˝ááᢠ--prefix
, áááłá:
./waf configure --prefix=/opt/local
á áá á¨áá, á¨áááŁáłá á áá, á°á ááá á¨ááŤá áľáááá áŤáľááŁá ./waf
, á
áľá á
áĽáŤá áĽá
á áá áááá / áááŚ/á áŤáŁá˘áŤá.
áĄáľá ./waf clean
ááŤá áĽá
á áá á¨ááá á¨áá ááŽáááąá áĽáá°áá á¨áááአá ááľ áĽá
á áá ááá á áá áľ áá á á°áᨠá
áľá á
áĽáŤ.
áľááá
, ns-3 á ááá áá áá°áá á áŤáľáááá ./waf install
. ááááŤáąá á áĽááááš á°á áááá˝ áá
á áľááá á áŤáľáááá¸ááᢠáá á áá áŤááľá á¤á°-ááťáááľ á¨áááŁáł áá፠ááľáĽ áááľáłáᣠááá áá á ááłááľ á°á áááá˝ á°ááŁáŤá¸á á¨ns-3 áá፠áá áŤá ááŽááŤáá˝ áá ááľáŤáľá á¨ááŤáŤáľáľ á¨áá áá
á áá áá ááŤáááľ áá˝ááá˘
áá áá á
á ns-3 ááá áá á¨áá°á á°á¨á áá á ááľ Waf áľááŞááľ áĽáť á áᢠá áá´ ááĽáŤáľ á¨ááአá áá á áááŤá ááľáĽ áĽá áá áŤáłááá scratch/
ááá á áĽáááľ áá°src/...
áĽá á á°ááłáłá áá ááŽáĽ á ááŁá¸á áá. á¨áľ áĽááłá ááľáłááľ áĽá ááŽáĽ áá˝áá áá áĽáá°áá¨á°áá áááá;
$ ../../../waf ...
áá áá á á°ááş áĽá ááľá á°áľ á¨á°ááá áááá, áľááá á¨á°áťá áááľááá˝ á á. á ááľ á¨á°ááá° ááááľ áĽáá° á¨á˝áá á ááłá áá áá áá á˘ááŤáá˝ ááá vim, áááľ á°áááá ááá áááá˝ á¨áá¨ááąá áľ, á ááą ns-3 á áááááŁáľ áŤááááá, ááá°áá á°áá á¨ááá áŽáľá ááá¨á áŤááááá. áŤáá áĽáť tar tarball, á¨ááŤá á¨á áŤáŁá˘ á°áááá áá¨áł áá˝áá:
$ export NS3DIR="$PWD"
$ function waff { cd $NS3DIR && ./waf $* ; }
$ cd scratch
$ waff build
á ááá áá፠ááľáĽ áĽáá° á°áŤ á¨áá áľááŞááľ ááá¨áá ááłá ááá áá˝ááᢠ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: ..." ááľááŽá˝ á á°á á°á¨á°á áááŤá áĽáá°áá˝á áἠáá á, áá á¨á°ááá° áá. ááá ááá á áŞáááą áá¨á¨áť áá áŤáá áá áá፠ááľáá ááá áá¨áŤáá˝ áĽááłáá áŤáłáŤá, ááá áá¨áŤáá˝ á áá°áłáŠá ááá á áá°á¨á°áąá.) áĽá ááá áá°á.py á áá˝á ááŽá°á°á áŽáŽá˝ áá áľáŤá áľáአáŤá°áááá˘
3.6 áľááŞááąá á áááľ áá
áĽá áĽááá áá áľááŞááśá˝á á ááĽáĽá áľá áĽáá°áááá áá. áá
á¨áááŁáł áľáááą á¨á፠á¤á°ááá
ááľ ááááśá˝ á áľááá áááááłá¸áá áĽá á¤á° ááá
ááśáš á áá°áľ áá áááá¸áá ááá¨ááἠáŤáľá˝ááᢠááŽááŤáá ááááľ á ááá áá áá áá á¨áááŞáŤ áá -âŻ-run
. á á¨áŚáłá áŤááá ááŽááŤá ns-3 á áť áĽáááľ á°áá áááá¨áá¨á°ááá á áá°á¨áĽáĄ-
$ ./waf --run hello-simulator
Waf á ááááŞáŤ ááŽááŤá á áľááá ááááŁáąá áŤá¨áááŁá áĽá á áľááá á¨áá ááááŁáᢠá¨ááŤá áá á¨áá¨á°ááá áá¤áľ á¨ááŤáᣠááŽááŤá áŤáľáá˝áá.
Hello Simulator
áĽááłá á°áľ á áá˝á! á áá ᨠns-3 á°á áá áááľ!
áá¤áąá áŤáá¨á áá ááľá¨á á ááĽá?
áááááśá˝ áŤáŠ áááááŁáłá á á°áłáŤ áááł áá áááá áŤáłáŤá ááá áá áá¤áąá á áŤáŠáᢠ"áá á˛ááá°á", á¨á፠á [Build-with-Waf] ááá ááľáĽ á¨áĽááľáá á¨áááŁáł áááł áá° ááá¨á áĽáľá á á á¨á°ááťášáŁ áá áá° áááłá ááááľ á áááŚáłáᢠáá¨á. á áá áá áá¨áŞáŤ áľáá ááľ ááľáĽ áĽá á áá á¨ááá ááá á¨áŽááśá áá ááľ áአ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"
ááááŽá˝ áá° ááŽááŤá áá°áááá ááłá-áŻá. ááľá˘áŤáááľ áľááá á¨áľá á°áľ áááĽááľ ááá áŤáᢠáŤááľá á¨áá¨áŤ-áŻá á ááŤáŽá˝á ááá°á á¨áá¨á°ááá áŤáľááĄáĄ-
$ ./waf --run test-runner --command-template="%s --help"
3.6.2 áá¨á
á áá áááá፠áľá ns-3 ááŽááŤáá˝á ááááľáŁ áááłá á áŤá (áááłáᣠá.á˛.á˘.) ááá á¨áá
á°á¨ áľááľáł áá¨áŤ ááłáŞáŤ (áááłááĄ- valgrind), á°ááłáłá á
á˝ áá áá -âŻ-command-template = "âŚ"
. áááłá, á á áŤáá ááľáĽ áááŽáĽ á.á˛.á˘. á¨áĽááľá hello-simulator ns-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 á¨áľáŤ áááŤ
Waf á ns-3 áá á ááľ áá áŤáá áŚáł áááá á áá áľá˘ áá
á áá á¨áá¤áľ áááá˝ á¨ááťáá áľ á¨áľáŤ áá፠ááááᢠááá áá áĽááá
á áááá˝ á¨ns-3 ááá áá áá ááá¨áľ á¨ááááľ? áááá á°á áá -âŻ-cwd
:
$ ./waf --cwd=...
á¨áá¤áľ áááá˝á á áľáŤ áááŤá ááľáĽ áááááľ á¨á áá á ááş áá ááŤáááľ áá˝ááᢠá áá áááł, á¨áá¨á°áá ááĽá°á áŤááá áĽááá áá¨áł áá˝áá.
$ function waff {
CWD="$PWD"
cd $NS3DIR >/dev/null
./waf --cwd="$CWD" $*
cd - >/dev/null
}
áá
á¨áá°áá á¨áľáĽáá áľáŞáľ ááľáἠá¨á ááá á¨áľáŤ áá፠áá áĽáá ᣠáá° áááŤá áááłá áááĽá á¨ááŤá áááŞáŤ áá°áŁá áá ááŽááŤáá á¨ááááá á ááľ á¨áĽáŤ áááŤáá áá° ááľáá á¨áĽáŤ áá፠áááá¨áᢠáĄáľáá áĽáá á
áłáá -âŻ-cwd
áááááľáŁ á áĽááá á°á áááá˝ á ááá Wafá á¨á¨áá°á á°á¨á áá፠áŤááą áĽá á¨áá¤áľ áááá˝á áĽá፠áŤáááŤáá˘
ááá: hab.com