Friday 20 June 2014

Installasi ns-allinone-2.33 ke dalam Ubuntu 10.10

Walaupun Ubuntu telah memasuki versi yang lebih terbaru, Ubuntu 10.10 telah dipilih kerana saya mahukan ns dan Evalvid saya berada di dalam satu OS yang sama.  Evalvid telah diinstall seperti pada posting yang lepas.  Leceh kalau ns di OS lain, Evalvid di OS lain pulak.  Kenapa pulak ns-allinone2.33 dipilih untuk digunakan? sebab versi 2.33 ni adalah versi yang paling baru yang boleh compatible dengan EDCA patch (versi ns yang terbaru sewaktu blog ni ditulis adalah versi 2.35).

Masalah sekarang adalah Ubuntu 10.10 masih menggunakan compiler yang lama, manakala ns yang nak saya gunakan ni, iaitu ns-allinone-2.33 pula ditulis menggunakan compiler baru.  maka ada beberapa konfigurasi yang perlu dilakukan supaya ns-allinone-2.33 compatible dengan Ubuntu 10.10.   Langkah-langkahnya ditunjukkan di bawah.

LANGKAH 1:  Download/ install library yang diperlukan
Ubuntu 10.10 sudah tidak disokong lagi.  Maka untuk update library Ubuntu 10.10, sourcelist mesti dikonfigurasi.  Boleh rujuk posting yang lepas.
sudo apt-get install g++ autoconf automake make libtool patch xgraph libx11-dev libxmu-dev libxmu-headers libxt-dev build-essential
sudo apt-get install gcc-4.4 g++-4.4

LANGKAH 2:  Download ns-allinone-2.33

wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.33.tar.gz


LANGKAH 3:  Untar (Decompress) ns-allinone-2.33.tar.gz

Pastikan ns-allinone-2.33.tar.gz telah diletakkan ke dalam folder yang anda mahukan.  Dalam kes ini, saya letakkan dalam /home/najwan

tar xvf ns-allinone-2.33.tar.gz

LANGKAH 3:  Edit file configure
gedit /home/najwan/ns-allinone-2.33/otcl-1.13/configure
Cari:
Linux*)
SHLIB_CFLAGS="-fpic"
SHLIB_LD="ld -shared"
SHLIB_SUFFIX=".so"

Tukar kepada:

Linux*)
SHLIB_CFLAGS="-fpic"
SHLIB_LD="gcc -shared"
SHLIB_SUFFIX=".so" 

LANGKAH 3:  Edit file ranvar.cc
gedit /home/najwan/ns-allinone-2.33/ns-2.33/tools/ranvar.cc
Cari:
if (alpha_ < 1) {
   double u = rng_->uniform(1.0);
   return GammaRandomVariable::GammaRandomVariable(1.0 +      
alpha_, beta_).value() * pow (u, 1.0 / alpha_);  
}


Tukar kepada:
if (alpha_ < 1) {
   double u = rng_->uniform(1.0);
   return GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);
}

LANGKAH 4:  Edit file nakagami.cc
gedit /home/najwan/ns-allinone-2.33/ns-2.33/mobile/nakagami.cc
Cari:

if (int_m == m) {
resultPower = ErlangRandomVariable::ErlangRandomVariable(Pr/m, int_m).value();
} else {
resultPower = GammaRandomVariable::GammaRandomVariable(m, Pr/m).value();
}

Tukar kepada:

if (int_m == m) {
resultPower = ErlangRandomVariable(Pr/m, int_m).value();
} else {
resultPower = GammaRandomVariable(m, Pr/m).value();
}


LANGKAH 5:  Edit file tcl8.4.18/unix/Makefile.in

gedit /home/najwan/ns-allinone-2.33/tcl8.4.18/unix/Makefile.in

Cari:
CC = @CC@ 
Tukar kepada:
CC = @CC@-4.4

LANGKAH 6: Edit file ns-2.33/Makefile.in
gedit /home/najwan/ns-allinone-2.33/ns-2.33/Makefile.in

Cari:
CC = @CC@ 
CPP = @CXX@

Tukar kepada:
CC = @CC@-4.4
CPP = @CXX@-4.4


LANGKAH 7:  Install ns-allinone-2.33
cd ns-allinone-2.33
./install




Sekarang, sepatutnya ns-allinone-2.33 boleh diinstallasi dengan lancar.