﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-朱的工作记录-文章分类-linux编程</title><link>http://www.cppblog.com/van201314/category/16197.html</link><description>技术博客</description><language>zh-cn</language><lastBuildDate>Fri, 20 May 2011 03:01:16 GMT</lastBuildDate><pubDate>Fri, 20 May 2011 03:01:16 GMT</pubDate><ttl>60</ttl><item><title>SNMP裁剪编译</title><link>http://www.cppblog.com/van201314/articles/146800.html</link><dc:creator>朱</dc:creator><author>朱</author><pubDate>Fri, 20 May 2011 02:59:00 GMT</pubDate><guid>http://www.cppblog.com/van201314/articles/146800.html</guid><wfw:comment>http://www.cppblog.com/van201314/comments/146800.html</wfw:comment><comments>http://www.cppblog.com/van201314/articles/146800.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/van201314/comments/commentRss/146800.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/van201314/services/trackbacks/146800.html</trackback:ping><description><![CDATA[<div><h2><span>开发环境</span></h2>  <p><span>开发主机：</span><span>SUSE Linux9.3</span><span>（内核</span><span>2.6.11.4-20a-default</span><span>）</span></p>  <p><span>编译器：</span><span>mipsel-linux-uclibc-gcc 3.4.3<br /><br /></span></p><p><span>解压</span><span>ucd-snmp-4.2.tar.gz</span><span>源码包</span></p>  <p><span>#tar xzvf ucd-snmp-4.2.tar.gz</span></p>  <p><span>#cd ucd-snmp-4.2/<br /><br /></span></p><p align="left"><span>#</span> <span><span>./configure --with-cc=mipsel-linux-uclibc-gcc --with-ar=mipsel-linux-uclibc-ar --with-cflags="-Os -Dstatvfs=statvfs64 -Wno-error" --with-ldflags="-Wl,--no-undefined -Wl,--warn-once -Wl,--warn-common -Wl,--warn-constructors -Wl,--warn-multiple-gp" --includedir=/uclibc/include --libdir=/uclibc/lib/ --target=mips-elf-linux --host=mips-elf-linux --with-endianness=big --with-sys-contact="Unknown" --with-sys-location="Unknown" --with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp" --disable-debugging --disable-ipv6 --disable-privacy --disable-libtool-lock --without-opaque-special-types </span><span><span>--with-mib-modules="yourObject" --disable-FEATURE --without-PACKAGE </span></span><span><span>--without-root-access </span></span><span><span>--with-out-mib-modules="snmpv3" --with-out-mib-modules="notification" --with-out-mib-modules="ucd_snmp"</span></span></span></p>    <p><span>执行</span><span>./configure</span><span>生成</span><span>Makefile</span><span>文件。如果需要自定义更多功能，可以修改</span><span>./configure</span><span>选项。</span></p>  <p><span>注：确保</span><span>ucd-snmp-4.2/agent/mibgroup/</span><span>下有</span><span>yourObject.c</span><span>和</span><span>yourObject.h</span><span>文件。</span></p><br /><br /><p><span>#vi ./mib_module_config.h</span></p>  <p><span>编辑</span><span>mib_module_config.h</span><span>，保留下面这几个函数，其余的都注释掉。</span></p>  <p>#define USING_MIBII_MODULE 1</p>  <p>#define USING_YOUROBJECT_MODULE 1</p>  <p>#define USING_MIBII_SYSTEM_MIB_MODULE 1</p>  <p>#define USING_MIBII_SNMP_MIB_MODULE 1</p>  <p>#define USING_MIBII_TCP_MODULE 1</p>  <p>#define USING_MIBII_ICMP_MODULE 1</p>  <p>#define USING_MIBII_IP_MODULE 1</p>  <p>#define USING_MIBII_UDP_MODULE 1</p>  <p>#define USING_MIBII_VACM_VARS_MODULE 1</p>  <span>#define USING_UTIL_FUNCS_MODULE 1</span><br /><br /><br /><br /><p><span>#vi agent/mibgroup/mib_module_inits.h</span></p>  <p><span>编辑</span><span>mib_module_inits.h</span><span>，保留下面这几个函数，其余的都注释掉。</span></p>  <p><span>if (should_init("yourObject")) init_yealinkObject();</span></p>  <p><span>if (should_init("snmp_mib")) init_snmp_mib();</span></p>  <p><span>if (should_init("system_mib")) init_system_mib();</span></p>  <p><span>if (should_init("snmp_mib")) init_snmp_mib();</span></p>  <p><span>if (should_init("tcp")) init_tcp();</span></p>  <p><span>if (should_init("icmp")) init_icmp(); if (should_init("ip")) init_ip();</span></p>  <p><span>if (should_init("udp")) init_udp();</span></p>  <span>if (should_init("vacm_vars")) init_vacm_vars();</span><br /><br /><br /><p><span>#vi agent/Makefile</span></p>  <span>编辑</span><span>Makefile</span><span>文件，分别在</span><span>LMIBOBJS 和</span><span>MIBOBJS<span>这两行去除不需要的模块，可参考<span>mib_module_inits.h里面注册的模块。<br /></span><br /></span><p><span>#make</span></p>  <p><span>生成的</span><span>snmpd</span><span>文件在</span><span>/ ucd-snmp-4.2/agent/</span><span>下</span></p>  <p><span># mipsel-linux-uclibc-strip snmpd</span></p>  <span>strip</span><span>去掉一些不必要的信息，减小文件大小</span><br /><br /><br /><span>MIB</span><span>文件转为</span><span>.c/.h</span><span>文件</span><br /><br /><p><span>进入</span><span>ucd-snmp-4.2/local/</span><span>目录下，复制</span><span>YOUR-MIB.mib</span><span>到这个目录。</span></p>  <p><span>该目录下有个</span><span>mib2c</span><span>脚本文件。</span></p>  <p><span># env MIBS="+YOUR-MIB" ./mib2c yourObject</span></p>  <p><span>即可生成</span><span>.c</span><span>和</span><span>.h</span><span>文件。如果遇到</span><span>mib2c</span><span>有问题，</span><span>vi mib2c</span><span>，查看第一行的</span><span>perl</span><span>路径是否正确。</span></p>  <span>复制生成的</span><span>yourObject.c</span><span>和</span><span>yourObject.h</span><span>文件到</span><span>ucd-snmp-4.2/agent/mibgroup/</span><span>目录下。在</span><span>yourObject.c</span><span>文件中添加</span><span>init_yourObject</span><span>和</span><span>var_yourObject</span><span>函数所需的内容。</span><br /><br /><br /><br /><br /><br /><br /><p>&nbsp;</p><p>&nbsp;</p></span></div><img src ="http://www.cppblog.com/van201314/aggbug/146800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/van201314/" target="_blank">朱</a> 2011-05-20 10:59 <a href="http://www.cppblog.com/van201314/articles/146800.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>