Teagaisc insamhlóir líonra ns-3. Caibidil 3

Teagaisc insamhlóir líonra ns-3. Caibidil 3
caibidil 1,2

3 Ag tosnú
3.1 Forbhreathnú
3.2 Réamhriachtanais
3.2.1 Eisiúint ns-3 a íoslódáil mar chartlann foinse
3.3 Íoslódáil ns-3 ag baint úsáide as Git
3.3.1 Ag lódáil ns-3 ag úsáid Bake
3.4 Tionól ns-3
3.4.1 Foirgneamh le build.py
3.4.2 Tógáil le Bake
3.4.3 Tógáil le Waf
3.5 Tástáil ns-3
3.6 An script a rith
3.6.1 Argóintí na líne ordaithe
3.6.2 Dífhabhtaithe
3.6.3 Eolaire oibre

Caibidil 3

Ag tosú

Tá sé mar aidhm ag an gcaibidil seo an léitheoir a ullmhú le tosú le ríomhaire nach mbeadh ns-3 suiteáilte riamh aige. Clúdaíonn sé ardáin tacaithe, réamhriachtanais, conas ns-3 a fháil, conas ns-3 a thógáil, agus conas do chláir shimplí a thástáil agus a thógáil.

3.1 Forbhreathnú

Tógtar an t-insamhlóir ns-3 mar chóras de leabharlanna bogearraí comhoibríocha. Le linn tionóil, nasctar cód na gclár úsáideoirí leis na leabharlanna seo. Úsáidtear na teangacha ríomhchlárúcháin C++ nó Python chun cláir shaincheaptha a scríobh.

Déantar Ns-3 a dháileadh mar chód foinse, rud a chiallaíonn go gcaithfidh timpeallacht forbartha bogearraí a bheith ag an spriocchóras chun na leabharlanna a thógáil ar dtús agus ansin an clár úsáideora a thógáil. I bprionsabal, d’fhéadfaí ns-3 a dháileadh mar leabharlanna réamhdhéanta do chóras ar leith, agus sa todhchaí féadfar iad a dháileadh ar an mbealach seo. Ach sa lá atá inniu ann déanann go leor úsáideoirí a gcuid oibre trí eagarthóireacht a dhéanamh ar ns-3 féin, agus mar sin tá sé úsáideach an cód foinse a bheith agat chun na leabharlanna a thógáil. Más mian le haon duine tabhairt faoin obair chun leabharlanna agus pacáistí réamhdhéanta a chruthú do chórais oibriúcháin, déan teagmháil leis an liosta seoltaí le do thoil. ns-forbróirí.

Ansin, féachfaimid ar thrí bhealach chun ns-3 a íoslódáil agus a thógáil. Is é an chéad cheann ná an scaoileadh oifigiúil a íoslódáil agus a thógáil ón bpríomhshuíomh. Is é an dara ceann ná cóipeanna de leaganacha forbartha den suiteáil bhunúsach ns-3 a roghnú agus a chóimeáil. Is é an tríú ná uirlisí tógála breise a úsáid chun breis síntí a luchtú le haghaidh ns-3. Rachaimid trí gach ceann acu ós rud é go bhfuil na huirlisí beagán difriúil.

B’fhéidir go n-iontas ar úsáideoirí Linux a bhfuil taithí acu cén fáth nach gcuirtear ns-3 ar fáil mar phacáiste cosúil le formhór na leabharlanna eile a úsáideann bainisteoir pacáiste? Cé go bhfuil pacáistí dénártha ann le haghaidh dáiltí Linux éagsúla (m.sh. Debian), déanann an chuid is mó d’úsáideoirí eagarthóireacht ar na leabharlanna agus bíonn orthu ns-3 iad féin a atógáil, agus mar sin tá sé áisiúil an cód foinse a bheith ar fáil. Ar an gcúis seo, díreoimid ar shuiteáil ón bhfoinse.

Don chuid is mó d’fheidhmchláir ns-3 cearta root nach bhfuil gá leo, moltar cuntas úsáideora gan phribhléid a úsáid.

3.2 Réamhriachtanais

Tá roinnt spleáchais ag an sraith iomlán de leabharlanna ns-3 atá ar fáil ar leabharlanna tríú páirtí, ach den chuid is mó is féidir ns-3 a thógáil agus a úsáid le tacaíocht do roinnt comhpháirteanna coitianta (suiteáilte go minic de réir réamhshocraithe): tiomsaitheoir C++, Python, eagarthóir cód foinse (mar shampla, vim, emacseclipse) agus, má úsáidtear stórtha forbartha, córais rialaithe leagan Git. Ní bheidh ar fhormhór na n-úsáideoirí céaduaire a bheith buartha má thuairiscíonn a gcumraíocht go bhfuil roinnt ardghnéithe ns-3 in easnamh, ach dóibh siúd ar mian leo suiteáil iomlán a dhéanamh, cuireann an tionscadal vicí ar fáil a chuimsíonn leathanaigh le go leor leideanna agus cleasanna úsáideacha. Leathanach amháin den sórt sin is ea an leathanach Suiteáil, le treoracha suiteála do chórais éagsúla, ar fáil ag: https://www.nsnam.org/wiki/Installation.

Míníonn an chuid Réamhriachtanais den vicí seo na pacáistí atá ag teastáil chun tacú le roghanna coitianta ns-3 agus soláthraíonn sé freisin na horduithe a úsáidtear chun iad a shuiteáil ar bhlasanna coitianta Linux nó macOS.

Is féidir leat leas a bhaint as an deis seo chun an leathanach vicí ns-3 nó an príomhshuíomh Gréasáin a iniúchadh: https://www.nsnam.org, toisc go bhfuil go leor eolais ann. Ag tosú leis an leagan is déanaí de ns-3 (ns-3.29), tá na huirlisí seo a leanas ag teastáil chun ns-3 a rith:

Pacáiste Uirlisí/Leagan

  • C++ tiomsaitheoir
    clang++ nó g++ (g++ leagan 4.9 nó níos airde)
  • Python
    leagan python2 >= 2.7.10, nó leagan python3 >=3.4
  • dul
    aon leagan is déanaí (chun rochtain a fháil ar ns-3 ar GitLab.com)
  • tarra
    aon leagan is déanaí (le scaoileadh ns-3 a dhíphacáil)
  • bunzip2
    aon leagan is déanaí (chun scaoileadh ns-3 a dhíphacáil)

Chun an leagan réamhshocraithe de Python a sheiceáil, cineál python -V. Chun an leagan g++ a sheiceáil, cineál g++ -v. Má tá aon uirlisí in easnamh nó ró-shean, féach le do thoil don treoir suiteála ar leathanach vicí ns-3.

As seo amach, glacaimid leis go bhfuil an léitheoir ag rith Linux, MacOS, nó aithriseoir Linux, agus go bhfuil na huirlisí thuas ar a laghad aige.

3.2.1 Eisiúint ns-3 a íoslódáil mar chartlann foinse

Is é seo an cúrsa gníomhaíochta d'úsáideoir nua atá ag iarraidh a íoslódáil agus triail a bhaint as an scaoileadh is déanaí agus leaganacha pacáiste de ns-3. foilsítear eisiúintí ns-3 mar chartlanna foinse comhbhrúite, ar a dtugtar uaireanta tarball. tarball Is formáid chartlainne bogearraí speisialta é ina gcuirtear roinnt comhad le chéile. Tá an chartlann comhbhrúite de ghnáth. próiseas tosaithe ns-3 trí tarball simplí, ní gá duit ach scaoileadh a roghnú, a íoslódáil agus é a dhíphacáil.

Glacaimid leis gur mian leat, mar úsáideoir, ns-3 a thógáil in eolaire áitiúil ar a dtugtar spás oibre. Is féidir leat cóip oibre den eisiúint a fháil tríd an méid seo a leanas a chur isteach sa chonsól Linux (trí na huimhreacha leagan cuí a chur in ionad, ar ndóigh)

$ 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 

Tabhair aird ar an bhfóntas a úsáidtear thuas wget, ar uirlis líne ordaithe é chun rudaí a íoslódáil ón Idirlíon. Mura bhfuil sé suiteáilte agat, is féidir leat do bhrabhsálaí a úsáid chuige seo.

Má leanann tú na céimeanna seo tabharfar chuig an eolaire ns-allinone-3.29 tú, ba cheart go bhfeicfidh tú roinnt comhad agus eolaire ann

$ 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

Tá tú réidh anois le dáileadh bunúsach ns-3 a thógáil agus is féidir leat bogadh ar aghaidh go dtí an roinn ar thógáil ns-3.

3.3 Íoslódáil ns-3 ag baint úsáide as Git

Tá an cód ns-3 ar fáil sna stórtha Git ar GitLab.com ag https://gitlab.com/nsnam/. Grúpa nsnam tugann sé le chéile na stórtha éagsúla a úsáideann tionscadal foinse oscailte.

Is é an bealach is éasca chun tús a chur le stórtha Git a úsáid ná an timpeallacht a fhorc nó a chlónáil ns-3-alilín. Seo sraith scripteanna a bhainistíonn luchtú agus cóimeáil na bhfochóras ns-3 is coitianta a úsáidtear. Mura bhfuil tú nua do Git, seans nach mbeidh cur amach agat ar na téarmaí "forc" agus "clón"; má tá, molaimid duit clónáil a dhéanamh (do chóip féin a dhéanamh) an stór atá suite ar GitLab.com mar seo:

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

Ag an gcéim seo, an dearcadh do eolaire ns-3-alilín beagán difriúil ón eolaire cartlainne scaoileadh a thuairiscítear thuas. Ba cheart breathnú ar rud éigin mar seo:

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

Tabhair faoi deara go bhfuil script ann íoslódáil.py, a bhainfidh ns-3 agus an cód foinse a théann leis. Anseo tá rogha agat: íoslódáil an pictiúr forbartha ns-3 is déanaí:

$ python download.py

nó is fearr an scaoileadh ns-3 ag baint úsáide as an bhratach -n chun an uimhir eisithe a léiriú:

$ python download.py -n ns-3.29

Tar éis an chéim seo chuig an eolaire ns-3-alilín déanfar stórtha breise a íoslódáil ns-3, bhácáil, pybindgen и netanim.

Tabhair faoi deara
Ar mheaisín le Ubuntu16.04 glan, bhí orm an t-ordú a athrú go dtí seo: $ sudo python3 download.py -n ns-3.29 (nótaí an aistritheora anseo feasta).

3.3.1 Ag lódáil ns-3 ag úsáid Bake

An dá mhodh thuas (cartlann foinse nó stór ns-3-alilín via Git) úsáideach chun an tsuiteáil ns-3 is simplí a fháil le breiseáin iolracha (pybindgen chun ceangail Python a ghiniúint agus netanim le haghaidh beochan líonra). Tugtar an tríú stór a chuirtear ar fáil de réir réamhshocraithe in ns-3-allinone bhácáil.

Bake Is uirlis é chun bogearraí a thógáil ar bhealach comhordaithe ó stórtha iolracha, a forbraíodh don tionscadal ns-3. Bake is féidir é a úsáid chun leaganacha forbartha de ns-3 a fháil, chomh maith le síntí a íoslódáil agus a thógáil ar bhunleagan an dáileacháin ns-3, amhail an timpeallacht Forghníomhú Cód Díreach, CradleNetwork Insamhladh Cradle, an cumas ceangail Python nua agus “feipeanna” ns-3 éagsúla a chruthú.

Tabhair faoi deara
CradleNetwork Insamhalta Cradle Is creat é a ligeann duit stoic fíor líonra TCP/IP a úsáid taobh istigh d'insamhlóir líonra.

Má tá tú ag súil go mbeidh ardghnéithe nó gnéithe breise ag do shuiteáil ns-3, is féidir leat an chonair suiteála seo a leanúint.

Sna heisiúintí ns-3 is déanaí Bake cuireadh leis an scaoileadh tarra. Áirítear leis an scaoileadh comhad cumraíochta a ligeann duit na leaganacha bogearraí atá ann faoi láthair a íoslódáil ag am an eisiúna. Is é sin, mar shampla, an leagan Bake, a dháiltear le heisiúint ns-3.29, a úsáid chun comhpháirteanna a aisghabháil don scaoileadh sin ns-3 nó níos luaithe, ach ní féidir é a úsáid chun comhpháirteanna a aisghabháil le haghaidh eisiúintí níos déanaí (má tá an comhad tuairisce ar an bpacáiste bakeconf.xml gan nuashonrú).

Is féidir leat an chóip is déanaí a fháil freisin bhácáiltríd an ordú seo a leanas a chur isteach i do chonsól Linux (ag glacadh leis go bhfuil Git suiteáilte agat):

$ cd 
$ mkdir workspace 
$ cd workspace 
$ git clone https://gitlab.com/nsnam/bake.git

Nuair a ritheann tú an t-ordú git, ba cheart duit rud éigin mar seo a leanas a fheiceáil:

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.

Tar éis an t-ordú a chríochnú Clón ba cheart go mbeadh eolaire ainmnithe agat bhácáil, ba cheart go mbeadh cuma mar seo ar a bhfuil ann:

$ cd bake
$ ls
bake bakeconf.xml bake.py doc examples generate-binary.py test TODO

Tabhair faoi deara go bhfuil roinnt scripteanna Python luchtaithe agat, modúl Python ainmnithe bhácáil agus comhad cumraíochta XML. Is é an chéad chéim eile ná na scripteanna seo a úsáid chun an dáileadh ns-3 de do rogha féin a íoslódáil agus a thógáil. Tá roinnt spriocanna saincheaptha ar fáil:

  1. ns-3.29: modúl a fhreagraíonn don scaoileadh; déanfaidh sé comhpháirteanna cosúil leis an scaoileadh sa tarball a íoslódáil;

  2. ns-3-dev: modúl den chineál céanna, ach ag baint úsáide as cód ón gcrann forbartha;

  3. ns-allinone-3.29: Modúl a chuimsíonn gnéithe breise eile cosúil le Ródú Cliceáil agus Cradle Insamhladh Líonra, Sreabhadh Oscailte le haghaidh ns-3.

  4. ns-3-alilín: cosúil leis an leagan scaoileadh an mhodúil i dteannta a chéile, ach le haghaidh cód forbartha.

Tabhair faoi deara
cliceáil — ailtireacht bogearraí modúlach chun ródairí a chruthú.

Is prótacal é Openflow chun an próiseas próiseála sonraí a tharchuirtear thar líonra sonraí ag ródairí agus lasca a bhainistiú, ag cur teicneolaíocht líonra atá sainithe ag bogearraí i bhfeidhm.

Is féidir an pictiúr forbartha reatha (neamhscaoileadh) ns-3 a fháil ag:https://gitlab.com/nsnam/ns-3-dev.git.

Déanann na forbróirí iarracht na stórtha seo a choinneáil in ord oibre comhsheasmhach, ach tá siad sa réimse forbartha agus tá cód neamheisithe iontu, mar sin mura bhfuil sé beartaithe agat gnéithe nua a úsáid, roghnaigh an scaoileadh oifigiúil ansin.

Is féidir leat an leagan is déanaí den chód a fháil trí liosta na stórtha a bhrabhsáil, nó trí dul chuig leathanach gréasáin ns-3 Releases:https://www.nsnam.org/releases/ agus cliceáil ar an nasc leagan is déanaí. Sa sampla seo leanfaimid ar aghaidh le ns-3.29.

Anois, chun na comhpháirteanna ns-3 a theastaíonn uainn a fháil, úsáidfimid an uirlis Bake. Déanaimis cúpla focal tosaigh a rá faoin obair Bake.

Oibríonn Bake trí fhoinsí pacáiste a lódáil isteach in eolaire foinse agus na leabharlanna a shuiteáil san eolaire tógála. Bake is féidir é a reáchtáil trí thagairt a dhéanamh don dénártha, ach más mian leat a rith Bake ní ón eolaire inar íoslódáladh é, tá sé inmholta an cosán a chur leis bhácáil chuig do chosán (athróg timpeallacht PATH), mar shampla mar seo a leanas (mar shampla do bhlaosc bash Linux). Téigh go dtí an eolaire "bácáil" agus ansin socraigh na hathróga timpeallachta seo a leanas:

$ export BAKE_HOME=`pwd` 
$ export PATH=$PATH:$BAKE_HOME:$BAKE_HOME/build/bin 
$ export PYTHONPATH=$PYTHONPATH:$BAKE_HOME:$BAKE_HOME/build/lib

Cuirfidh sé seo an clár bácáil.py go dtí an cosán bhlaosc agus ligfidh sé do chláir eile na míreanna inrite agus na leabharlanna a chruthaigh sé a aimsiú bhácáil. I gcásanna áirithe úsáide bhácáil, ní gá an socrú PATH agus PYTHONPATH a thuairiscítear thuas, ach de ghnáth éilíonn tógáil iomlán de ns-3-allinone (le pacáistí breise).

Téigh chuig d'eolaire oibre agus cuir isteach iad seo a leanas sa chonsól:

$ ./bake.py configure -e ns-3.29

Next iarrfaimid Bake seiceáil an bhfuil go leor uirlisí againn chun na comhpháirteanna éagsúla a luchtú. Diailigh:

$ ./bake.py check

Ba cheart duit rud éigin mar seo a leanas a fheiceáil:

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

Go háirithe, tá uirlisí uaslódála cosúil le Mercurial, CVS, Git agus Bazaar riachtanach sa chéim seo mar go gceadaíonn siad dúinn an cód a fháil. Ag an bpointe seo, suiteáil na huirlisí atá ar iarraidh ar an ngnáthbhealach do do chóras (má tá a fhios agat conas) nó déan teagmháil le riarthóir do chórais chun cabhair a fháil.

Ansin, bain triail as na bogearraí a íoslódáil:

$ ./bake.py download

Ba chóir go mbeadh an toradh rud éigin mar:

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

Ciallóidh sé seo go bhfuil trí fhoinse íoslódáilte. Anois téigh go dtí an eolaire foinse agus cineál ls; Ba cheart duit a fheiceáil:

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

Anois tá tú réidh chun an dáileadh ns-3 a thógáil.

3.4 Tionól ns-3

Mar is amhlaidh le híoslódáil ns-3, tá go leor bealaí ann chun ns-3 a thógáil. Is é an rud is mó ba mhaith linn béim a chur air ná go dtógtar ns-3 ag baint úsáide as uirlis tógála ar a dtugtar Wafcur síos orthu thíos. Oibreoidh formhór na n-úsáideoirí le Waf, ach tá cúpla script áisiúil ann chun cabhrú leat tosú nó tógáil níos casta a eagrú. Mar sin le do thoil, sula léann tú faoi Waf, Féach ar tógáil.py agus tionól le bhácáil.

3.4.1 Foirgneamh le build.py

Rabhadh! Níl an chéim tógála seo ar fáil ach ón leagan cartlainne foinse a fuarthas mar a thuairiscítear thuas; agus ní íoslódáil trí git nó bácáil.

Nuair a bheidh ag obair le cartlann scaoileadh tarballI ns-3-alilín Tá script áisiúil ann a fhéadann na comhpháirteanna a chur le chéile níos éasca. Tógáil.py a thugtar air. Socróidh an clár seo an tionscadal duit ar an mbealach is úsáidí. Tabhair faoi deara, áfach, go gcuimsíonn socrú agus obair níos forbartha le ns-3 de ghnáth úsáid a bhaint as córas tógála ns-3 féin, Waf, a thabharfar isteach níos déanaí sa rang teagaisc seo.

Má íoslódáil tú ag baint úsáide as tarball, ansin i do eolaire ~/spás oibre eolaire le hainm rud éigin mar ns-allinone-3.29. Cuir isteach iad seo a leanas:

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

Nuair a ghlaoitear air tógáil.py D’úsáideamar argóintí na n-orduithe chun na samplaí agus na tástálacha a úsáideadh sa rang teagaisc seo a thógáil, nach bhfuil tógtha de réir réamhshocraithe in ns-3. De réir réamhshocraithe, tógann an clár gach modúl atá ar fáil freisin. Ansin, más mian leat, is féidir leat ns-3 a thógáil gan samplaí agus tástálacha, nó modúil nach bhfuil ag teastáil le haghaidh do chuid oibre a eisiamh.

Feicfidh tú go leor teachtaireachtaí aschuir tiomsaitheora ar taispeáint ag an script mar a thógann sé na codanna éagsúla atá tú luchtaithe. Ar dtús déanfaidh an script iarracht an beochantóir a thógáil netanim, ansin an gineadóir ceangailteach pybindgen agus ar deireadh ns-3. Nuair a bheidh an próiseas críochnaithe, ba cheart duit na rudaí seo a leanas a fheiceáil:

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

Sna trí líne dheireanacha den liostú feicimid teachtaireacht faoi mhodúil nár tógadh:

Modules not built (see ns-3 tutorial for explanation):
brite                     click

Ciallaíonn sé seo go simplí gur féidir nach bhfuil roinnt modúil ns-3 atá ag brath ar leabharlanna seachtracha tógtha, nó nach gá iad a thógáil don chumraíocht seo. Ní chiallaíonn sé seo nach bhfuil an t-insamhlóir le chéile nó nach n-oibreoidh na modúil le chéile i gceart.

3.4.2 Tógáil le Bake

Má d'úsáid tú bácáil thuas chun cód foinse a fháil ó stórtha an tionscadail, is féidir leat leanúint ar aghaidh ag úsáid é chun ns-3 a thógáil. Diailigh:

$ ./bake.py build

agus ba cheart duit rud éigin mar seo a fheiceáil:

>> Building pybindgen-0.19.0.post4+ng823d8b2 - OK 
>> Building netanim-3.108 - OK 
>> Building ns-3.29 - OK

Tooltip: Is féidir leat a dhéanamh freisin ar an dá na céimeanna a íoslódáil agus a thógáil ag an am céanna trí ghlaoch ar "bake.py imscaradh".

Seans go dteipfidh ar chóimeáil na gcomhpháirteanna go léir, ach leanfar le cóimeáil mura bhfuil comhpháirt ag teastáil. Mar shampla, ceist iniomparthachta a bhí ann le déanaí ná sin castxml is féidir a chur le chéile ag uirlis bhácáil ní ar gach ardán. Sa chás seo, beidh teachtaireacht mar seo le feiceáil:

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

Ach castxml ní gá ach amháin más mian leat ceangail Python nuashonraithe a chruthú. I gcás fhormhór na n-úsáideoirí níl aon ghá leis seo (go dtí go n-athraíonn siad ns-3 ar a laghad), agus mar sin is féidir neamhaird a dhéanamh de rabhaidh dá leithéid go fóill.

Má theipeann air, tabharfaidh an t-ordú seo a leanas leid duit faoi spleáchais atá ar iarraidh:

$ ./bake.py show

Déanfar spleáchais éagsúla na bpacáistí a bhfuil tú ag iarraidh a thógáil a liostú.

3.4.3 Tógáil le Waf

Go dtí seo, chun tús a chur le tógáil ns-3, d'úsáideamar ceachtar den script tógáil.py, nó uirlis bhácáil. Tá na huirlisí seo úsáideach chun ns-3 a thógáil agus chun leabharlanna a chothabháil. Go deimhin, le tógáil a ritheann siad an uirlis tógála Waf ón eolaire ns-3. Waf suiteáilte leis an gcód foinse ns-3. Téann formhór na n-úsáideoirí ar aghaidh go tapa chuig úsáid dhíreach chun an ns-3 a chumrú agus a chur le chéile Waf. Mar sin, chun leanúint ar aghaidh, téigh chuig an eolaire ns-3 a chruthaigh tú ar dtús.

Níl sé seo ag teastáil go docht ag an am seo, ach beidh sé úsáideach backtrack beagán a fheiceáil agus conas athruithe a dhéanamh ar chumraíocht an tionscadail. Is dócha gurb é an t-athrú cumraíochta is úsáidí is féidir leat a dhéanamh ná leagan optamaithe den chód a chruthú. De réir réamhshocraithe, tá do thionscadal cumraithe agat chun leagan dífhabhtaithe a thógáil. Breathnaímid ar thionscadal chun tógáil optamaithe a chruthú. Chun a mhíniú do Waf gur cheart dó tógálacha optamaithe a dhéanamh a chuimsíonn samplaí agus tástálacha, beidh ort na horduithe seo a leanas a rith:

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

Seolfaidh sé seo Waf lasmuigh den eolaire áitiúil (mar áis duit). Glanann an chéad ordú ón tógáil roimhe seo, de ghnáth ní bhíonn géarghá leis seo, ach is dea-chleachtas é (féach freisin próifílí tógála thíos); scriosfaidh sé seo leabharlanna a cruthaíodh roimhe seo agus comhaid oibiachta atá suite san eolaire tóg/. Nuair a dhéantar an tionscadal a athchumrú agus nuair a sheiceálann an córas tógála na spleáchais éagsúla, ba cheart duit aschur cosúil leis an méid seo a leanas a fheiceáil:

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)

Tabhair faoi deara le do thoil an chuid dheireanach den liostú thuas. Níl roinnt roghanna ns-3 cumasaithe de réir réamhshocraithe nó teastaíonn tacaíocht chórais chun feidhmiú i gceart. Mar shampla, chun XmlTo a chumasú, ní mór don leabharlann a bheith i láthair ar an gcóras libxml-2.0. Mura bhfuarthas an leabharlann seo agus mura raibh an fheidhm ns-3 chomhfhreagrach cumasaithe, taispeánfar teachtaireacht. Tabhair faoi deara freisin gur féidir an t-ordú a úsáid sudo chun an giota suaite “socraigh aitheantas grúpa ag am rite” do chláir áirithe. Níl sé cumasaithe de réir réamhshocraithe agus mar sin feictear an ghné seo mar “gan chumas”. Ar deireadh, chun liosta roghanna cumasaithe a fháil, bain úsáid as Waf le paraiméadar --check-config.

Anois, déanaimis dul ar ais agus aistrigh ar ais go dtí an tógáil dífhabhtaithe ina bhfuil na samplaí agus na tástálacha.

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

Tá an córas tógála socraithe anois agus is féidir leat leaganacha dífhabhtaithe de chláir ns-3 a thógáil ach ag clóscríobh:

$ ./waf

B'fhéidir gur chuir na céimeanna thuas iachall ort cuid den chóras ns-3 a thógáil faoi dhó, ach anois tá a fhios agat conas an chumraíocht a athrú agus cód optamaithe a thógáil.

Chun a sheiceáil cé acu próifíl atá gníomhach do chumraíocht tionscadail ar leith, tá ordú:

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

An scéal thuas tógáil.py tacaíonn sé le hargóintí freisin --enable-examples и --enable-tests, ach roghanna eile Waf ní thacaíonn sé go díreach. Mar shampla, ní oibreoidh sé seo:

$ ./build.py --disable-python

beidh an t-imoibriú mar seo:

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

Mar sin féin, an t-oibreoir speisialta - - is féidir a úsáid chun pas a fháil paraiméadair breise via wafmar sin in ionad an méid thuas oibreoidh an t-ordú seo a leanas:

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

toisc go gineann sé an príomh-ordú ./waf chumrú --disable-python. Seo roinnt leideanna tosaigh níos mó faoi Waf.

Earráidí tógála a láimhseáil

Déantar eisiúintí ns-3 a thástáil ar na tiomsaitheoirí C++ is déanaí atá ar fáil tráth a scaoilte ar dháileacháin choitianta Linux agus MacOS. Mar sin féin, le himeacht ama, scaoiltear dáiltí nua le tiomsaitheoirí nua, agus is gnách go mbíonn na tiomsaitheoirí níos nuaí seo níos pedantic faoi rabhaidh. Cumraíonn ns-3 a thógáil chun gach rabhadh a chóireáil mar earráid, mar sin uaireanta má tá leagan níos sine á rith agat ar chóras níos nuaí, d'fhéadfadh rabhadh tiomstóra stop a chur leis an tógáil.

Mar shampla, scaoileadh ns-3.28 le haghaidh Fedora 28 roimhe seo, a chuimsigh mórleagan nua GCC (gcc-8). Ag tógáil an scaoileadh ns-3.28 nó leaganacha níos luaithe faoi Fedora 28, le Gtk2+ suiteáilte, tarlóidh an earráid seo a leanas:

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

In eisiúintí ag tosú ó ns-3.28.1, in Waf tá rogha ar fáil chun na fadhbanna seo a réiteach. Díchumasaíonn sé an bhratach "-Werror" a shocrú i g++ agus clang++. Is é seo an rogha "--disable-werror" agus ní mór é a chur i bhfeidhm le linn cumraíochta:

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

Cumraigh nó assemble

Roinnt orduithe Waf níl brí acu ach sa chéim chumraíochta, agus níl cuid acu bailí ach sa chéim thógála. Mar shampla, más mian leat na gnéithe aithrise ns-3 a úsáid, is féidir leat an socrú giotán a chumasú suid ag baint úsáide as sudo, mar a thuairiscítear thuas. Sáróidh sé seo na horduithe céim cumraíochta, agus dá bhrí sin is féidir leat an chumraíocht a athrú ag baint úsáide as an ordú seo a leanas, a chuimsíonn samplaí agus tástálacha freisin.

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

Má dhéanann tú é seo Waf seolfaidh sudochun cláir chruthaithe soicéad cód aithrise a athrú chun a rith le ceadanna root. I Waf Tá go leor roghanna eile ar fáil maidir leis na céimeanna cumraíochta agus tógála. Chun do roghanna a fhiosrú, cuir isteach:

$ ./waf --help

Sa chéad chuid eile úsáidfimid roinnt roghanna a bhaineann le tástáil.

Próifílí Tionóil

Tá sé feicthe againn cheana féin conas is féidir leat a chumrú Waf le haghaidh tionóil dífhabhtaigh и uasmhéadú:

$ ./waf --build-profile=debug

Tá próifíl tionóil idirmheánach ann freisin, scaoileadh. Rogha -d comhchiallach le --build-profile. Rialaíonn an phróifíl tógála an úsáid a bhaintear as logáil, dearbhuithe, agus lasca leas iomlán a bhaint as tiomsaitheoir:

Teagaisc insamhlóir líonra ns-3. Caibidil 3

Mar a fheiceann tú, níl logáil agus dearbhuithe ar fáil ach amháin i dtógáil dífhabhtaithe. Is é an cleachtas a mholtar do script a fhorbairt i mód dífhabhtaithe, ansin ritheann arís agus arís eile a dhéanamh (le haghaidh staitisticí nó athruithe paraiméadar) i bpróifíl tógála optamaithe.

Má tá cód agat nár cheart a bheith ag rith ach i bpróifílí tógála áirithe, bain úsáid as Macra Fillteán an Chóid:

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;)

Réamhshocrú, Waf cuireann sé artifacts tógála san eolaire tógála. Is féidir leat eolaire aschur difriúil a shonrú ag baint úsáide as an rogha - -out, mar shampla:

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

Trí é seo a chomhcheangal le próifílí tógála, is féidir leat aistriú go héasca idir roghanna tiomsaithe éagsúla:

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

A ligeann duit oibriú le tionóil iolracha gan a bheith ort an tionól is déanaí a athscríobh gach uair. Nuair a athraíonn tú go próifíl eile, Waf Beidh a thiomsú ach é, gan recompiling go hiomlán gach rud.

Nuair a aistríonn tú próifílí tógála ar an mbealach seo, ní mór duit a bheith cúramach na roghanna cumraíochta céanna a thabhairt gach uair. Cabhróidh sainiú roinnt athróg timpeallachta leat botúin a sheachaint:

$ 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

Tiomsaitheoirí agus bratacha

Sna samplaí thuas Waf chun ns-3 a thógáil úsáideann an tiomsaitheoir C++ ó GCC ( g ++). Mar sin féin, is féidir leat an ceann a úsáideann tú a athrú Waf Tiomsaitheoir C++, tríd an athróg timpeallachta CXX a shainiú. Mar shampla, chun an tiomsaitheoir C++ Clang, clang++ a úsáid,

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

Ar an mbealach céanna is féidir leat a chumrú Waf tiomsú dáilte a úsáid ag baint úsáide as discc:

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

Tá tuilleadh eolais faoi distcc agus tiomsú dáilte le fáil ar leathanach an tionscadail sa rannán Doiciméadúcháin. Chun bratacha tiomsaitheora a chur leis agus ns-3 á chumrú, úsáid athróg timpeallachta CXXFLAGS_EXTRA.

Suiteáil

Waf is féidir é a úsáid chun leabharlanna a shuiteáil in áiteanna éagsúla ar an gcóras. De réir réamhshocraithe, tá na leabharlanna tiomsaithe agus na míreanna inrite suite san eolaire a thógáil, agus ós rud é go bhfuil a fhios ag Waf suíomh na leabharlann agus na nithe inrite seo, ní gá na leabharlanna a shuiteáil in aon áit eile.

Más fearr le húsáideoirí suiteáil lasmuigh den eolaire tógála, is féidir leo an t-ordú a rith ./waf shuiteáil. Is é an réimír réamhshocraithe le haghaidh suiteáil / usr / áitiúilMar sin, ./waf shuiteáil Beidh cláir a shuiteáil i / usr / áitiúil / bin, leabharlanna i / usr / local / lib agus comhaid ceanntásc i /usr/áitiúil/ cuir san áireamh. De ghnáth is gá cearta superuser a shocrú le réimír réamhshocraithe, mar sin bheadh ​​ordú tipiciúil sudo ./waf shuiteáil. Nuair a sheolfar é, roghnóidh Waf na leabharlanna comhroinnte san eolaire tógála a úsáid ar dtús, ansin lorgóidh sé leabharlanna feadh an chosáin chuig na leabharlanna atá cumraithe sa timpeallacht áitiúil. Mar sin agus leabharlanna á suiteáil ar chóras, is dea-chleachtas é a sheiceáil go bhfuil na leabharlanna cearta á n-úsáid. Is féidir le húsáideoirí rogha a dhéanamh suiteáil le réimír eile tríd an rogha a rith le linn cumraíochta --prefix, mar shampla:

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

Más rud é níos déanaí, tar éis an tógáil, cuireann an t-úsáideoir an t-ordú suiteála isteach ./waf, úsáidfear an réimír /roghnaigh/áitiúil.

Foireann ./waf clean Ní mór é a úsáid roimh an tionscadal a athchumrú más rud é go n-úsáidfear an tsuiteáil Waf faoi ​​réimír eile.

Mar sin, chun ns-3 a úsáid ní gá glaoch ./waf install. Ní bheidh an t-ordú seo de dhíth ar fhormhór na n-úsáideoirí toisc Waf Tógfaidh siad na leabharlanna reatha ón eolaire tógála, ach d'fhéadfadh sé go mbeadh sé seo úsáideach do roinnt úsáideoirí má bhíonn obair le cláir lasmuigh den eolaire ns-3 i gceist lena ngníomhaíochtaí.

Waf singil

Ag barrleibhéal an chrainn foinse ns-3, níl ach script Waf amháin. Nuair a thosaíonn tú ag obair, caithfidh tú go leor ama san eolaire scratch/ nó níos doimhne isteachsrc/... agus ag an am céanna a rith Waf. Is féidir leat cuimhneamh ach áit a bhfuil tú agus a reáchtáil Waf ar an mbealach seo a leanas:

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

ach beidh sé seo tedious agus seans maith earráid, agus mar sin tá réitigh níos fearr. Bealach coitianta amháin is ea eagarthóir téacs a úsáid mar emacsvim, ina n-osclaítear dhá sheisiún críochfoirt, úsáidtear ceann amháin chun ns-3 a thógáil, agus úsáidtear an dara ceann chun an cód foinse a chur in eagar. Mura bhfuil agat ach tarball, ansin is féidir le hathróg timpeallachta cabhrú le:

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

$ cd scratch 
$ waff build

In eolaire na modúl b'fhéidir go mbeadh sé mealltach script fánach waf a chur leis exec ../../waf. Le do thoil, ná é sin a dhéanamh. Cuireann sé seo mearbhall ar dhaoine nua agus, nuair a dhéantar go dona é, cruthaítear earráidí tógála ar deacair iad a bhrath. Is iad na réitigh a thaispeántar thuas an cosán ba cheart a úsáid.

3.5 Tástáil ns-3

Is féidir leat trialacha aonaid an dáileacháin ns-3 a rith tríd an script a rith ./tástáil.py:

$ ./test.py

Reáchtáiltear na tástálacha seo comhthreomhar le Waf. Faoi dheireadh ba cheart duit teachtaireacht a fheiceáil ag rá:

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

Is teachtaireacht thábhachtach í seo chun tuairteanna valgrind, tuairteanna nó earráidí a aithint, ag léiriú fadhbanna leis an gcód nó neamh-chomhoiriúnacht idir uirlisí agus cód.

Feicfidh tú freisin an t-aschur deiridh ó Waf agus tástálaí ag rith gach tástála, a bheidh cuma rud éigin mar seo:

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)

De ghnáth reáchtálann úsáideoirí an t-ordú seo chun a fhíorú go tapa go bhfuil an dáileadh ns-3 tógtha i gceart. (Tabhair faoi deara go bhféadfadh ord na línte "PAS: ..." a bheith difriúil, is gnách é seo. Rud atá tábhachtach ná go dtaispeánann an líne achomair ag deireadh na tuarascála gur éirigh le gach tástáil; níor theip ar na tástálacha agus níor tharla tuairteála ar bith.) Agus WafAgus tástáil.py comhthreomhóidh sé an obair ar fud na gcroíthe próiseálaithe atá ar fáil den mheaisín.

3.6 An script a rith

Is gnách go ritheann muid scripteanna faoi smacht Waf. Ligeann sé seo don chóras tógála a chinntiú go bhfuil cosáin leabharlainne roinnte socraithe i gceart agus go bhfuil na leabharlanna ar fáil ag am rite. Chun an clár a rith, bain úsáid as Waf le paraiméadar - -run. Rithfimid an choibhéis ns-3 den chlár uileláithreach hello a domhantrí na rudaí seo a leanas a chlóscríobh:

$ ./waf --run hello-simulator

Seiceálfaidh Waf ar dtús go bhfuil an clár tógtha i gceart agus tógfaidh sé más gá. Ansin Waf feidhmeoidh sé clár a tháirgeann an t-aschur seo a leanas.

Hello Simulator

Comhghairdeachas! Is úsáideoir ns-3 thú anois!

Cad ba cheart dom a dhéanamh mura bhfeicim torthaí?

Má fheiceann tú teachtaireachtaí Wafrud a thugann le fios gur éirigh leis an tógáil, ach ní fheiceann tú an t-aschur "Dia duit Insamhlóir", ansin tá seans ann gur aistrigh tú do mhodh tógála go dtí an roinn [Tóg-le-Waf] uasmhéadú, ach chaill sé athrú ar ais go dtí an mód dífhabhtaigh. Úsáideann gach aschur consól a úsáidtear sa rang teagaisc seo comhpháirt speisialta ns-3 a fheidhmíonn an logáil agus a úsáidtear chun teachtaireachtaí saincheaptha a phriontáil chuig an consól. Díchumasaítear aschur na comhpháirte seo go huathoibríoch nuair a thiomsaítear cód optamaithe - tá sé "optamaithe". Mura bhfeiceann tú an t-aschur "Dia duit Insamhlóir", cuir isteach an méid seo a leanas:

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

a chumrú Waf chun leaganacha dífhabhtaithe de chláir ns-3 a thógáil, lena n-áirítear samplaí agus tástálacha. Ba cheart duit ansin an leagan dífhabhtaithe reatha den chód a atógáil trí chlóscríobh a dhéanamh

$ ./waf

Anois má ritheann tú an clár dia duit-insamhlóir, ba cheart duit an toradh ionchais a fheiceáil.

3.6.1 Argóintí na líne ordaithe

Chun argóintí na n-orduithe a chur ar aghaidh chuig an gclár ns-3, úsáid an patrún seo a leanas:

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

Ionadaigh le hainm do chláir agus leis na hargóintí. Argóint - -command-template le haghaidh Waf go bunúsach is oideas é chun an líne ordaithe iarbhír a thógáil Waf a úsáidtear chun an clár a rith. Seiceálann Waf go bhfuil an tógáil críochnaithe, socraíonn sé na cosáin leabharlainne roinnte, ansin úsáideann an teimpléad líne ordaithe a cuireadh ar fáil agus cuireann sé ainm an chláir in ionad an áitsealbhóra %s chun an inrite a ghlaoch. Má fhaigheann tú an chomhréir seo casta, tá leagan níos simplí a bhaineann leis an gclár ns-3 agus a chuid argóintí faoi iamh i Sleachta aonair:

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

Sampla úsáideach eile is ea seomraí tástála a reáchtáil go roghnach. Glacaimid leis go bhfuil sraith tástála ar a dtugtar mytest (i ndáiríre níl ann). Thuas d’úsáideamar an script ./test.py chun roinnt tástálacha a rith ag an am céanna, a ghlaonn an clár tástála arís agus arís eile tástála-rádala. Glaoigh tástála-rádala go díreach chun tástáil amháin a rith:

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

Cuirfear argóintí ar aghaidh chuig an gclár tástála-rádala. Toisc nach bhfuil mytest ann, ginfear teachtaireacht earráide. Chun na roghanna reatha tástála atá ar fáil a phriontáil, cuir isteach:

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

3.6.2 Dífhabhtaithe

Chun ríomhchláir ns-3 a rith faoi áirgiúlacht eile, mar dífhabhtóir (mar shampla, gdb) nó uirlis tástála cuimhne (mar shampla, valgrind), foirm chomhchosúil a úsáid - -command-template = "…". Mar shampla, a reáchtáil sa dífhabhtóir gdb do chlár hello-insamhlóir ns-3 le hargóintí:

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

Tabhair faoi deara go dtagann ainm an chláir ns-3 leis an argóint - -run, agus an áirgiúlacht bhainistíochta (anseo gdb) an chéad chomhartha san argóint - -command-template. Rogha - -args eolas gdbgo mbaineann an chuid eile den líne ordaithe leis an gclár "níos ísle". (Roinnt leaganacha gdb nach dtuigeann an rogha - -args. Sa chás seo, bain na hargóintí cláir ó - -command-template agus bain úsáid as an tacar ordaithe gdb arga.) Is féidir linn an t-oideas seo agus an ceann roimhe sin a chur le chéile chun an tástáil a rith faoin dífhabhtóir:

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

3.6.3 Eolaire oibre

Ba chóir Waf a sheoladh óna shuíomh ag barr an chrainn ns-3. Is é an fillteán seo an t-eolaire oibre ina scríobhfar na comhaid aschuir. Ach cad más mian leat na comhaid seo a choinneáil lasmuigh den chrann foinse ns-3? Úsáid argóint - -cwd:

$ ./waf --cwd=...

Seans go mbeidh sé níos áisiúla duit na comhaid aschuir a fháil i do eolaire oibre. Sa chás seo, is féidir leis an ngníomh indíreach seo a leanas cabhrú:

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

Caomhnaíonn an maisiú seo den leagan roimhe seo den ordú an t-eolaire oibre reatha, téann sé chuig an eolaire Wafagus ansin treoracha Waf chun an t-eolaire oibre a athrú ar ais go dtí an eolaire oibre reatha a shábháiltear sula dtosaíonn tú ar an gclár. Luaímid an fhoireann - -cwd Ar mhaithe le hiomláine, ritheann formhór na n-úsáideoirí Waf ón eolaire barrleibhéil agus gineann siad comhaid aschuir ann.

Ar leanúint: Caibidil 4

Foinse: will.com

Add a comment