PORTING
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. --- INTRODUCTION
  2. Just a quick note on porting and sending me patches:
  3. First off, you probably should subscribe to
  4. net-snmp-coders@lists.sourceforge.net by sending a message to
  5. net-snmp-coders-request@lists.sourceforge.net with a subject line of
  6. subscribe.  This is a mailing list to discuss all oft the coding
  7. aspects of the project.
  8. Additionally, you should probably be developing against the latest
  9. snapshot of the source code, which can be obtained through the
  10. net-snmp cvs server.  Details can be found at
  11. http://www.net-snmp.org/cvs/.
  12. If you send patches to us, it would greatly help us if you sent them
  13. to us based on the current checked out copy from CVS.  To do this,
  14. send us the output of "cvs diff -u" run in the top level net-snmp
  15. source tree after you have modified the files that will fix the
  16. problem or add the feature you're submitting the patch for.
  17. Quite a while back I started using the GNU autoconf testing suite to
  18. greatly enhance portability.  Because of this porting to new
  19. architectures is much easier than before.  However, new people porting
  20. the package to new architectures rarely take advantage of this setup
  21. and send me patches with lots of '#ifdef ARCH' type C code in it.  Let
  22. me say up front, I *hate* this type of coding now (even though I used
  23. to use it a lot).  What is better is to check for the necissary
  24. functionality using the configure script and then use the results of
  25. those tests.
  26. To do this, you need to install the GNU 'autoconf' package which also
  27. requires the GNU 'm4' (gm4) package as well.  This double installation
  28. is extremely easy and shouldn't take you more than 15 minutes max.
  29. After that, modify the configure.in and acconfig.h files as needed
  30. instead of modifying the config.h or configure files directly.  The
  31. Makefile will re-produce these files from the first two.
  32. Worst case: Don't put in #ifdef architecture style statements.
  33. Rather, create a new define in the s/ and m/ system specific header
  34. files and use those defines to test against in the C code.  This
  35. should only be done for things that can't be checked using configure
  36. though.
  37. Some autoconf examples:
  38. --- HEADER FILES
  39. In configure.in:
  40.   AC_CHECK_HEADERS(headdir/header.h)
  41. Then in your source code:
  42.   #ifdef HAVE_HEADDIR_HEADER_H
  43.     #include <headdir/header.h>
  44.   #ENDIF
  45. --- LIBRARY ROUTIENS
  46. In configure.in:
  47.   AC_CHECK_LIB(libexample, example_function)
  48. Thats it.  The Makefiles will automatically link against -llibexample
  49. if example_function is found in the library.
  50. --- FUNCTION CHECKS
  51. In configure.in:
  52.   AC_CHECK_FUNCS(example_function)
  53. In source code:
  54.   #ifdef HAVE_EXAMPLE_FUNCTION
  55.     /* use it */
  56.   #endif
  57. --- STRUCTURE MEMBER CHECKS
  58. In configure.in:
  59.   AC_CHECK_STRUCT_FOR([
  60. #include lines
  61. ], STRUCTURE, MEMBER)
  62.    ^^^^^^^^^  ^^^^^^  (change)
  63. In acconfig.h:
  64.   #undef STRUCT_STRUCTURE_HAS_MEMBER
  65.                 ^^^^^^^^^     ^^^^^^  (change)
  66. In source code:
  67.   #ifdef STRUCT_STRUCTURE_HAS_MEMBER
  68.     /* use it */
  69.   #endif
  70. --- READ THE MANUAL
  71. The GNU autoconf info files are extremely well written and easy to
  72. follow.  Please check them out.
  73. I'd be happy to help you through anything you don't understand or
  74. through more complex examples (eg, checking for structure parts or
  75. existance).  I'd be far less happy to get patches ignoring the above
  76. request.  If you simple can't abide by this, please send the patches
  77. anyway, but it'll just take me longer to get them applied.
  78. Submit the patch to http://www.net-snmp.org/patches/.
  79. Please include what version of the net-snmp package it was applied to
  80. and state the arcitectures you have tested it on.
  81. Thanks a lot for the consideration,
  82. Wes