Installing WSN LEACH Protocol on NS-2.34 in Fedora Here I am sharing my experience of installing WSN LEACH protocol on NS-2.34 in fedora 8 system. After searching in the Google a lot, I came across the following few useful links, explaining about installing Leach on NS-2. Here they are: Install Leach on ns-2.34 And Linuxquestions.org (few valuable posts) So, here the Step-by-Step method to install LEACH. You system need to be installed with NS-2.34 and the compiler gcc-4.3. these two are pre-requisite for installing LEACH. Let, the home directory of ns-2.34 is "/opt/ns-allinone-2.34" Download the package "ns-234-leach.tar.gz" into the directory "/opt/ns-allinone2.34/ns-2.34". ns-234-leach.tar.gz Download the bash file "leach-setup.sh" into the directory "/opt/ns-allinone2.34/ns-2.34". leach-setup.sh Note: If the home directory of your "ns-2.34" is other than "/opt/...", then you need to find "/opt/ns-allinone-2.34" and replace with "yourpath/ns-allinone-2.34" for the file "leach-setup.sh". Now, move to the directory "/opt/ns-allinone-2.34/ns-2.34" and patch the file "leach-setup.sh". cd /opt/ns-allinone-2.34/ns-2.34/ bash leach-setup.sh If the home directory of your "ns-2.34" is other than "/opt/...", then you need to find "/opt/ns-allinone-2.34" and replace with "yourpath/ns-allinone-2.34" for the follwoing two files: - "Makefile" : found in the directory "yourpath/ns-allinone-2.34/ns-2.34". - "Makefile.in" : found in the directory "yourpath/ns-allinone-2.34/ns-2.34".
Edit both “Makefile” & “Makefile.in” as following: CC = gcc-4.3 CPP = g++-4.3 Once the above steps are done, run the following commands in the Terminal: ./configure make clean make depend make When you using the make command you will get the following error: Code: ****************************************************************** ** trace/cmu-trace.cc: In member function ‘void CMUTrace::format(Packet*, const char*)’: trace/cmu-trace.cc:1327: error: ‘format_rca’ was not declared in this scope trace/cmu-trace.cc: At global scope: trace/cmu-trace.cc:1523: error: no ‘void CMUTrace::format_rca(Packet*, int)’ member function declared in class ‘CMUTrace’ make: *** [trace/cmu-trace.o] Error 1 ****************************************************************** ** To fix it you need to add the following code in “cmu-trace.h” file starting from line 165: Code: ****************************************************************** ** #ifdef MIT_uAMPS void format_rca(Packet *p, int offset); #define ADV_CHAR 'A' #define REQ_CHAR 'R' #define DATA_CHAR 'D' #endif
****************************************************************** ** And following into ns-default.tcl (line 765) to suppress few warnings: ****************************************************************** ** # —————————————————— Phy/WirelessPhy set alive_ 1 Phy/WirelessPhy set Efriss_amp_ 100e-12 Phy/WirelessPhy set Etwo_ray_amp_ 0.013e-12 Phy/WirelessPhy set EXcvr_ 50e-9 Phy/WirelessPhy set sleep_ 0 Phy/WirelessPhy set ss_ 1 Phy/WirelessPhy set dist_ 0 # —————————————————— ****************************************************************** ** Now run the following the commands to re-compile ns in terminal. make clean make depend make If the above commands passed successfully then you are ready to test your "Leach" by running “./test_leach” command. ./test_leach Now go to the following directory “yourpath/ns-allinone-2.34/ns-2.34/ns-234leach/mit/leach_sims” and check the file "leach.err", You may get few errors in the leach.err file as follows: ****************************************************************** ** can't read "env(RCA_LIBRARY)": no such variable while executing "source $env(RCA_LIBRARY)/ns-ranode.tcl" (file "mit/uAMPS/sims/uamps.tcl" line 9) ...................... .....Code Omitted..... ......................
(procedure "source" line 8) invoked from within "source tcl/mobility/$opt(rp).tcl" (file "tcl/ex/wireless.tcl" line 187) ****************************************************************** ** The problem is in the path. What modify all the paths in “ns-allinone-2.34/ns2.34/mit/uAMPS/sims/uamps.tcl”. Here is the modified code below the commented out lines (lines beginning with '#'): Code: ****************************************************************** ** ####################################################### ##################### # # This code was developed as part of the MIT uAMPS project. (June, 2000) # ####################################################### ##################### global opt bs #source $env(RCA_LIBRARY)/ns-ranode.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/rca/ns-ranode.tcl #source $env(uAMPS_LIBRARY)/ns-bsapp.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/uAMPS/ns-bsapp.tcl #source $env(uAMPS_LIBRARY)/extras.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/uAMPS/extras.tcl #source $env(uAMPS_LIBRARY)/stats.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/uAMPS/stats.tcl
#Uncomment these lines to use gdb to debug the c code #source mit/uAMPS/ns-bsapp.tcl #source mit/uAMPS/extras.tcl #source mit/uAMPS/stats.tcl #source $env(RCA_LIBRARY)/resources/ns-resourcemanager.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/rca/resources/ns-resource-manager.tcl #source $env(RCA_LIBRARY)/resources/ns-energyresource.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/rca/resources/ns-energy-resource.tcl #source $env(RCA_LIBRARY)/resources/ns-neighborresource.tcl source /hema/home/ns-allinone-2.35-RC4/ns2.35/mit/rca/resources/ns-neighbor-resource.tcl ****************************************************************** ** Now run the following the commands to re-compile ns in terminal. make clean make depend make and execute following again: ./test_leach Now check the file "leach.err", if no error reported then go to "leach.out" for results!
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.