dynlib.tex
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. chapter{Dynamic Libraries}
  2. label{chap:dynlib}
  3. Starting with the ns-2.33 release, ns-2 has support for dynamically
  4. loadable libraries.  
  5. section{Motivation}
  6. Many researchers around the world are developing 
  7. modified versions of ns2 in order to introduce new features such as 
  8. agents, protocols, algorithms, etc. The standard practice adopted in 
  9. doing this is to get an official version of the ns2 source distribution, 
  10. make the needed modifications on the source code, add new files 
  11. somewhere in the existing code tree, and finally build everything 
  12. into the ns2 executable.
  13. The introduction of dynamically loadable libraries provides a new way
  14. to extend ns-2, with the following features:
  15. begin{itemize}
  16.     item People can develop add-ons for ns2 (e.g. introducing new agents, 
  17. packet types, protocols) without having to modify the core simulator.
  18.     item New packet headers and types, as well as packet tracers, could 
  19. be defined to assist debugging, collection of statistics and inter-module 
  20. communication. These can also be loaded on demand according to user's needs.
  21.     item Dynamic libraries can be loaded at simulation time, with no 
  22. need to recompile the whole ns2 distribution or to keep different ns2 
  23. binaries.
  24.     item The installation of third-party ns2 extensions is made easier, 
  25. thereby facilitating their dissemination.
  26.     item Dynamic libraries will make life easier for lab technicians and 
  27. students. In fact, an official ns2 version can be installed by the 
  28. administrator and students can just build and use their preferred 
  29. extensions independently.
  30.     item Besides, these modifications will make ns2 more modular and 
  31. scalable. Adding new features to the simulator will be easier and 
  32. backward compatibility will be preserved.
  33. end{itemize}
  34. The below sections briefly summarize the more complete documentation
  35. that can be found at:
  36. http://www.dei.unipd.it/%7Ebaldo/ns_dl_patch/ns_dl_patch.html
  37. section{Support}
  38. label{sec:dynlib:support}
  39. The dynamic libraries extension is available for the ns-allinone-2.33 release, 
  40. with support existing in ns-2 from the ns-2.33 release.
  41. It has been tested on Linux i386, Linux x86_64, and Cygwin (32-bit) systems.
  42. It has not been tested with OS X and likely further extensions are necessary.
  43. The best way to use the system in Cygwin is to install the 
  44. ns-allinone-2.33 release, since there have been two small patches 
  45. to the tcl.m4 files in the tcl and tk directories.
  46. If you are using an older version of ns-2, one of the below patches
  47. may work:
  48. http://www.dei.unipd.it/%7Ebaldo/ns_dl_patch/Download.html
  49. section{Usage}
  50. label{sec:dynlib:usage}
  51. From a user's perspective, the only thing to do in order to use a 
  52. dynamic module in ns is to load it. After this operation, the module 
  53. itself can be used exactly as if it had been embedded in the ns binary.
  54. The loading of a dynamic module should be performed at the beginning 
  55. of the tcl script used for the simulation. The loading consists of the 
  56. following tcl instruction:
  57. begin{verbatim}
  58. load libmodulename.so
  59. end{verbatim}
  60. where libmodulename.so is the filename of the shared library.
  61. One thing we have to take care of is to use the right path to the library. 
  62. Relative and absolute paths can be used for this purpose; e.g., respectively,
  63. begin{verbatim}
  64. load ../src/.libs/libmodulename.so
  65. load /locale/baldo/lib/somethingelse.so
  66. end{verbatim}
  67. Note that you can just provide the file name without any path, 
  68. if the path it resides in is in the LD_LIBRARY_PATH environmental 
  69. variable in Linux, or the PATH environment variable on Cygwin.
  70. Also remember that the format of the shared libraries is OS-dependent: .so 
  71. libraries are found in unix systems, while for instance on cygwin 
  72. you will need to use .dll libraries, and on OS X the .dylib suffix
  73. is used.  With respect to this point, it is to be noted that also the 
  74. actual name of the library file might change - for instance, the same 
  75. library mentioned before would be called cygmodule-0.dll when built using 
  76. libtool on a cygwin system. Just remember to chek the actual filename 
  77. if you load command fails.
  78. We note that, for libraries built using libtool (which is the 
  79. method we propose in this document), when you install the 
  80. library on cygwin - i.e., when you type make install -, the dll 
  81. file gets installed in YOUR_PREFIX/bin, and not in YOUR_PREFIX/lib as 
  82. you might expect. Therefore, you should add YOUR_PREFIX/bin to your 
  83. PATH to make everything work smoothly.