﻿<?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++博客-兴海北路</title><link>http://www.cppblog.com/cuijixin/</link><description>               ---男儿仗剑自横行</description><language>zh-cn</language><lastBuildDate>Mon, 22 Mar 2010 02:38:54 GMT</lastBuildDate><pubDate>Mon, 22 Mar 2010 02:38:54 GMT</pubDate><ttl>60</ttl><item><title>Linux makefile 教程 非常详细，且易懂</title><link>http://www.cppblog.com/cuijixin/archive/2010/01/04/104748.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Mon, 04 Jan 2010 03:09:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2010/01/04/104748.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/104748.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2010/01/04/104748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/104748.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/104748.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近在学习Linux下的C编程，买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊，可能是我的理解能不行。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是google到了以下这篇文章。通俗易懂。然后把它贴出来，方便学习。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp...&nbsp;&nbsp;<a href='http://www.cppblog.com/cuijixin/archive/2010/01/04/104748.html'>阅读全文</a><img src ="http://www.cppblog.com/cuijixin/aggbug/104748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2010-01-04 11:09 <a href="http://www.cppblog.com/cuijixin/archive/2010/01/04/104748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代码覆盖率的测试工具 -- gcov</title><link>http://www.cppblog.com/cuijixin/archive/2010/01/03/104676.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Sun, 03 Jan 2010 04:03:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2010/01/03/104676.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/104676.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2010/01/03/104676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/104676.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/104676.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 代码覆盖率的测试工具&nbsp;--&nbsp;gcov2009-03-25&nbsp;09:47                                    简介在这章里，我们将会探讨gcov实用程序，并且了解一下如何使用gcov来帮助测试与支持软件配置与优化。我们将会了解如何使用gcov来构建软件，并且理解他所提供的各种数据类型。最后，我们将探讨当执行保险测试...&nbsp;&nbsp;<a href='http://www.cppblog.com/cuijixin/archive/2010/01/03/104676.html'>阅读全文</a><img src ="http://www.cppblog.com/cuijixin/aggbug/104676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2010-01-03 12:03 <a href="http://www.cppblog.com/cuijixin/archive/2010/01/03/104676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）用NET-SNMP软件包开发简单客户端代理</title><link>http://www.cppblog.com/cuijixin/archive/2009/03/05/75631.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Thu, 05 Mar 2009 07:28:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2009/03/05/75631.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/75631.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2009/03/05/75631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/75631.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/75631.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 写在前面的话：对于net-snmp我也是一个初学者，开始学习时也碰到了很多低级的问题。在很多论坛上（事实上比较少^_^,&nbsp;建议大家直接去sourcefoge社区看关于net-snmp的mail-list），都没有比较初级入门的文章，本着开源学习的精神，把自己的一点收获，共享给大家。通过参考一些前辈的文章和帮助文档，本文实现了一个简单的mib，并编写了文档。本文主要面向初级学习者（我也是个...&nbsp;&nbsp;<a href='http://www.cppblog.com/cuijixin/archive/2009/03/05/75631.html'>阅读全文</a><img src ="http://www.cppblog.com/cuijixin/aggbug/75631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2009-03-05 15:28 <a href="http://www.cppblog.com/cuijixin/archive/2009/03/05/75631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）net-snmp服务的安装</title><link>http://www.cppblog.com/cuijixin/archive/2009/03/05/75610.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Thu, 05 Mar 2009 05:55:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2009/03/05/75610.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/75610.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2009/03/05/75610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/75610.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/75610.html</trackback:ping><description><![CDATA[
<span class="Apple-style-span" style="font-family: song; border-collapse: collapse; font-size: 12px; "><div>今天做了snmp的测试，现把安装配置方法分享如下：</div><div>&nbsp;&nbsp;&nbsp;<font color="#ff0000">首先准备安装的源码包：net-snmp-5.4.2.1.tar.gz</font></div><div>1.解压源码包<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; tar xvf net-snmp****<br style="font: normal normal normal 12px/normal song, Verdana; ">2.创建安装目录<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; mkdir /usr/local/net-snmp<br style="font: normal normal normal 12px/normal song, Verdana; ">3.安装<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; ./configure --prefix=/usr/local/net-snmp<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; make<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; make install<br style="font: normal normal normal 12px/normal song, Verdana; ">4.安装成功cp配置文件到/usr/local/net-snmp/share/snmp/目录下<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; cp ./EXZAPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf<br style="font: normal normal normal 12px/normal song, Verdana; ">5.修改配置文件<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sec.name&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; community<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; #com2sec local&nbsp;&nbsp;&nbsp;&nbsp; localhost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMUNITY<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; #com2sec mynetwork NETWORK/24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMUNITY<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; com2sec local&nbsp;&nbsp;&nbsp;&nbsp; localhost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMUNITY<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; com2sec mynetwork 192.168.1.186&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">&nbsp;//为允许的源地址<br style="font: normal normal normal 12px/normal song, Verdana; "></font>&nbsp; com2sec mynetwork 192.168.1.254&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; com2sec mynetwork 192.168.1.0/24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">//为允许的源网络</font><br style="font: normal normal normal 12px/normal song, Verdana; ">6.编辑/etc/rc.local添加为自启动&nbsp;&nbsp;<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; 添加下面一行：<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; /usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf &amp;<br style="font: normal normal normal 12px/normal song, Verdana; ">7.设置环境变量，编辑/etc/profile<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; 在export前添加下面一行<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; PATH=/usr/local/net-snmp/bin:/usr/local/net-snmp/sbin:$PATH<br style="font: normal normal normal 12px/normal song, Verdana; ">8.测试命令<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; snmpget -v 1 -c "public" 192.168.1.236 .1.3.6.1.4.1.2021.10.1.3.1<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp; 注：要在同样安装过net-snmp的机器上测或在安装过第3方软件（solarwinds等）的机器测试<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该命令的最后一个字段为cpu的OID&nbsp;&nbsp;<br style="font: normal normal normal 12px/normal song, Verdana; ">&nbsp;</div><div><font color="#ff0000">#########################################################################</font></div><div>问题补充：</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上次装好netsnmp并观察了一段时间后发现获取内存，cpu信息等等都很正常，唯独磁盘信息与预期有点出入，我们预期获取磁盘所有分区的使用情况结果只获取了/根分区的使用情况:</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经查证是配置文件snmpd.conf里的配置有关：</div><div># disk checks<br style="font: normal normal normal 12px/normal song, Verdana; ">#</div><div># The agent can check the amount of available disk space, and make<br style="font: normal normal normal 12px/normal song, Verdana; "># sure it is above a set limit.</div><div># disk PATH [MIN=DEFDISKMINIMUMSPACE]<br style="font: normal normal normal 12px/normal song, Verdana; ">#<br style="font: normal normal normal 12px/normal song, Verdana; "># PATH:&nbsp; mount path to the disk in question.<br style="font: normal normal normal 12px/normal song, Verdana; "># MIN:&nbsp;&nbsp; Disks with space below this value will have the Mib's errorFlag set.<br style="font: normal normal normal 12px/normal song, Verdana; ">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default value = DEFDISKMINIMUMSPACE.</div><div># Check the / partition and make sure it contains at least 10 megs.</div><div><font color="#ff0000">disk / 10000<br style="font: normal normal normal 12px/normal song, Verdana; ">disk /home 10000</font></div><div># % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.9<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskPath.1 = "/" Hex: 2F<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskDevice.1 = "/dev/dsk/c201d6s0"<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskMinimum.1 = 10000<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskTotal.1 = 837130<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskAvail.1 = 316325<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskUsed.1 = 437092<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskPercent.1 = 58<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskErrorFlag.1 = 0<br style="font: normal normal normal 12px/normal song, Verdana; "># enterprises.ucdavis.diskTable.dskEntry.diskErrorMsg.1 = ""<br style="font: normal normal normal 12px/normal song, Verdana; ">因为配置文件默认只有disk / 10000这一行；按此格式添加你期望获取的磁盘或分区；</div><div>it&#8216;s ok！！问题解决；</div><div><font color="#ff0000">验证cmd:</font></div><div><font color="#ff0000">snmpwalk -v 1 -c "public" 218.108.231.183 .1.3.6.1.4.1.2021.9.1</font></div><div><font color="#ff0000">snmpwalk -v 1 -c "public" 218.108.231.183 .1.3.6.1.4.1.2021.9.1.7</font></div><div>&nbsp;</div></span><img src ="http://www.cppblog.com/cuijixin/aggbug/75610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2009-03-05 13:55 <a href="http://www.cppblog.com/cuijixin/archive/2009/03/05/75610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）net-snmp安装手记</title><link>http://www.cppblog.com/cuijixin/archive/2009/03/05/75588.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Thu, 05 Mar 2009 03:30:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2009/03/05/75588.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/75588.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2009/03/05/75588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/75588.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/75588.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: rgb(190, 205, 205); font-family: Arial; font-size: 12px; line-height: 18px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Installing /usr/share/man/man3/NetSNMP::agent.3pm<br>Installing /usr/share/man/man3/NetSNMP::OID.3pm<br>Installing /usr/share/man/man3/NetSNMP::agent::default_store.3pm<br>Installing /usr/share/man/man3/SNMP.3<br>Installing /usr/share/man/man3/NetSNMP::netsnmp_request_infoPtr.3pm<br>Installing /usr/share/man/man3/NetSNMP::default_store.3pm<br>Installing /usr/share/man/man3/NetSNMP::ASN.3pm<br>Installing /usr/share/man/man3/NetSNMP::TrapReceiver.3pm<br>Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Bundle/NetSNMP/.packlist<br>Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod<br>make[1]: Leaving directory `/root/net-snmp-5.4.1/perl'<br><br><br><br><br>[root@cgeek ~]# rpm -vih elfutils-devel-0.96-1.i386.rpm<br>warning: elfutils-devel-0.96-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2<br>error: Failed dependencies:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elfutils-libelf-devel = 0.96-1 is needed by elfutils-devel-0.96-1.i386<br>[root@cgeek ~]# rpm -qa |grep elfutils<br>elfutils-libelf-0.96-1<br>elfutils-0.96-1<br>[root@cgeek ~]# rpm -vih elfutils-libelf-devel-0.96-1.i386.rpm<br>warning: elfutils-libelf-devel-0.96-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2<br>Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br>&nbsp;&nbsp; 1:elfutils-libelf-devel ########################################### [100%]<br>[root@cgeek ~]# rpm -vih elfutils-devel-0.96-1.i386.rpm<br>warning: elfutils-devel-0.96-1.i386.rpm: V3 DSA signature: NOKEY, key ID 4f2a6fd2<br>Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br>&nbsp;&nbsp; 1:elfutils-devel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br><br><br><br>[root@cgeek ~]# /etc/rc.d/init.d/snmpd start<br>启动 snmpd：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ 确定 ]<br><br><br><br>http://blog.chinaunix.net/u2/62377/showart_490549.html</p><div><strong style="font-weight: bold; "><span>一.环境</span></strong></div><div><span>OS：RHEL AS4</span></div><div><span>net-snmp version：5.3.2</span></div><div><strong style="font-weight: bold; "><span>二.步骤</span></strong></div><div><span>1.用root帐户登录</span></div><div><span>2.运行snmpwalk和snmpget命令，看是否已经安装snmp，如果已经安装就没必要再安装了;-)</span></div><div><span>3.将net-snmp-5.3.2.tar.gz解压(tar -zxvf net-snmp-5.3.2.tar.gz)</span></div><div><span>4.进入net-snmp-5.3.2目录</span></div><div><span>5.运行./configure，根据提示输入相应信息</span></div><div><span>6.运行make</span></div><div><span>7.运行make install</span></div><div><span>8.安装完毕</span></div><div><strong style="font-weight: bold; "><span>三.可能遇到的问题</span></strong></div><div><span><span style="font-size: x-small; "><strong style="font-weight: bold; ">1.</strong>找不到libbeecrypt.la，在make时可能出现如下error</span></span></div><div><table border="0" align="center" style="font-size: 12px; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; width: 566px; "><tbody><tr><td style="font-size: 1em; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>libtool: link: cannot find the library `/usr/lib/libbeecrypt.la' (librpmio.la: /usr/lib/libbeecrypt.la)</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>make[1]: *** [snmpd] Error 1</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>make[1]: Leaving directory `/home/<em style="font-style: italic; "><span style="background-color: rgb(199, 199, 199); ">xxx</span></em>/net-snmp-5.3.2/agent'</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>make: *** [subdirs] Error 1</span></p></td></tr></tbody></table></div><div><span>解决办法：</span></div><div><span>到</span><a href="http://sourceforge.net/projects/beecrypt" target="_blank" style="color: rgb(170, 208, 208); text-decoration: none; "><span>http://sourceforge.net/projects/beecrypt</span></a><span>下载beecrypt-4.1.2.tar.gz</span></div><div><span>然后运行如下命令：</span></div><div><span>#tar -zxvf beecrypt-4.1.2.tar.gz</span></div><div><span>#./configure -prefix=/usr（默认是安装在/usr/local,我们需要安装在/usr目录下）</span></div><div><span>#make</span></div><div><span>#make install</span></div><div><span><span style="font-size: x-small; "><strong style="font-weight: bold; ">2.</strong>/usr/bin/ld: cannot find -lelf，在make时可能出现如下error</span></span></div><div><table border="0" align="center" style="font-size: 12px; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; width: 566px; "><tbody><tr><td style="font-size: 1em; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>/usr/bin/ld: cannot find -lelf</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>collect2: ld returned 1 exit status</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>make[1]: *** [snmpd] Error 1</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>make[1]: Leaving directory `/home/<span style="background-color: rgb(199, 199, 199); ">xxx</span>/net-snmp-5.3.2/agent'</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>make: *** [subdirs] Error 1</span></p></td></tr></tbody></table></div><div><span>解决办法：</span></div><div><span>#ln -s libelf.so.1 /usr/lib/libelf.so</span></div><div><span><span style="font-size: x-small; "><strong style="font-weight: bold; ">3.</strong>我在安装的过程中没有碰到这个问题，在此作为参考</span></span></div><div><span>echo /usr/local/lib &gt;/etc/ld.so.conf.d/libnetsnmp.conf<br></span><span>#/sbin/ldconfig -v<br>#make install</span></div><div><font class="Apple-style-span" color="#000000" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 16px; line-height: normal;"><br></span></font></div></span><img src ="http://www.cppblog.com/cuijixin/aggbug/75588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2009-03-05 11:30 <a href="http://www.cppblog.com/cuijixin/archive/2009/03/05/75588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈Unicode编码，简要解释UCS、UTF、BMP、BOM等名词</title><link>http://www.cppblog.com/cuijixin/archive/2009/01/12/71815.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Mon, 12 Jan 2009 07:42:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2009/01/12/71815.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/71815.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2009/01/12/71815.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/71815.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/71815.html</trackback:ping><description><![CDATA[
谈谈Unicode编码，简要解释UCS、UTF、BMP、BOM等名词

<div style="text-align: left;">这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念，增进知识，类似于打RPG游戏的升级。整理这篇文章的动机是两个问题： 
<br><br>问题一： <br>使用Windows记事本的&#8220;另存为&#8221;，可以在GBK、Unicode、Unicode big 
endian和UTF-8这几种编码方式间相互转换。同样是txt文件，Windows是怎样识别编码方式的呢？ 
<br><br>我很早前就发现Unicode、Unicode big 
endian和UTF-8编码的txt文件的开头会多出几个字节，分别是FF、FE（Unicode）,FE、FF（Unicode big 
endian）,EF、BB、BF（UTF-8）。但这些标记是基于什么标准呢？ <br><br>问题二： 
<br>最近在网上看到一个ConvertUTF.c，实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式，我原来就了解。但这个程序让我有些糊涂，想不起来UTF-16和UCS2有什么关系。 
<br>查了查相关资料，总算将这些问题弄清楚了，顺带也了解了一些Unicode的细节。写成一篇文章，送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂，但要求读者知道什么是字节，什么是十六进制。 
<br><br>0、big endian和little endian <br>big endian和little 
endian是CPU处理多字节数的不同方式。例如&#8220;汉&#8221;字的Unicode编码是6C49。那么写到文件里时，究竟是将6C写在前面，还是将49写在前面？如果将6C写在前面，就是big 
endian。还是将49写在前面，就是little endian。 
<br><br>&#8220;endian&#8221;这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开，由此曾发生过六次叛乱，其中一个皇帝送了命，另一个丢了王位。 
<br><br>我们一般将endian翻译成&#8220;字节序&#8221;，将big endian和little endian称作&#8220;大尾&#8221;和&#8220;小尾&#8221;。 
<br><br>1、字符编码、内码，顺带介绍汉字编码 
<br>字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码，为了处理汉字，程序员设计了用于简体中文的GB2312和用于繁体中文的big5。 
<br><br>GB2312(1980年)一共收录了7445个字符，包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7，低字节从A1-FE，占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。 
<br><br>GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号，它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字，同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030，对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。 
<br><br>从ASCII、GB2312、GBK到GB18030，这些编码方法是向下兼容的，即同一个字符在这些方案中总是有相同的编码，后面的标准支持更多的字符。在这些编码中，英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼，GB2312、GBK到GB18030都属于双字节字符集 
(DBCS)。 
<br><br>有的中文Windows的缺省内码还是GBK，可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符，普通人是很难用到的，通常我们还是用GBK指代中文Windows内码。 
<br><br>这里还有一些细节： <br><br>GB2312的原文还是区位码，从区位码到内码，需要在高字节和低字节上分别加上A0。 
<br><br>在DBCS中，GB内码的存储格式始终是big endian，即高位在前。 
<br><br>GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以GBK和GB18030的低字节最高位都可能不是1。不过这不影响DBCS字符流的解析：在读取DBCS字符流时，只要遇到高位为1的字节，就可以将下两个字节作为一个双字节编码，而不用管低字节的高位是什么。 
<br><br>2、Unicode、UCS和UTF 
<br>前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容（更准确地说，是与ISO-8859-1兼容），与GB码不兼容。例如&#8220;汉&#8221;字的Unicode编码是6C49，而GB码是BABA。 
<br><br>Unicode也是一种字符编码方法，不过它是由国际组织设计，可以容纳全世界所有语言文字的编码方案。Unicode的学名是"Universal 
Multiple-Octet Coded Character Set"，简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。 
<br><br>根据维基百科全书(<a href="http://zh.wikipedia.org/wiki/" target="_blank">http://zh.wikipedia.org/wiki/</a>)的记载：历史上存在两个试图独立设计Unicode的组织，即国际标准化组织（ISO）和一个软件制造商的协会（unicode.org）。ISO开发了ISO 
10646项目，Unicode协会开发了Unicode项目。 
<br><br>在1991年前后，双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果，并为创立一个单一编码表而协同工作。从Unicode2.0开始，Unicode项目采用了与ISO 
10646-1相同的字库和字码。 <br><br>目前两个项目仍都存在，并独立地公布各自的标准。Unicode协会现在的最新版本是2005年的Unicode 
4.1.0。ISO的最新标准是10646-3:2003。 <br><br>UCS规定了怎么用多个字节表示各种文字。怎样传输这些编码，是由UTF(UCS 
Transformation Format)规范规定的，常见的UTF规范包括UTF-8、UTF-7、UTF-16。 
<br><br>IETF的RFC2781和RFC3629以RFC的一贯风格，清晰、明快又不失严谨地描述了UTF-16和UTF-8的编码方法。我总是记不得IETF是Internet 
Engineering Task Force的缩写。但IETF负责维护的RFC是Internet上一切规范的基础。 
<br><br>3、UCS-2、UCS-4、BMP 
<br><br>UCS有两种格式：UCS-2和UCS-4。顾名思义，UCS-2就是用两个字节编码，UCS-4就是用4个字节（实际上只用了31位，最高位必须为0）编码。下面让我们做一些简单的数学游戏： 
<br><br>UCS-2有2^16=65536个码位，UCS-4有2^31=2147483648个码位。 
<br><br>UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 
(rows)，每行包含256个cells。当然同一行的cells只是最后一个字节不同，其余都相同。 <br><br>group 0的plane 
0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中，高两个字节为0的码位被称作BMP。 
<br><br>将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节，就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。 
<br><br>4、UTF编码 <br><br>UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下： 
<br><br>UCS-2编码(16进制) UTF-8 字节流(二进制) <br>0000 - 007F 0xxxxxxx <br>0080 - 07FF 
110xxxxx 10xxxxxx <br>0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 
<br><br>例如&#8220;汉&#8221;字的Unicode编码是6C49。6C49在0800-FFFF之间，所以肯定要用3字节模板了：1110xxxx 10xxxxxx 
10xxxxxx。将6C49写成二进制是：0110 110001 001001， 用这个比特流依次代替模板中的x，得到：11100110 10110001 
10001001，即E6 B1 89。 <br><br>读者可以用记事本测试一下我们的编码是否正确。 
<br><br>UTF-16以16位为单元对UCS进行编码。对于小于0x10000的UCS码，UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码，定义了一个算法。不过由于实际使用的UCS2，或者UCS4的BMP必然小于0x10000，所以就目前而言，可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案，UTF-16却要用于实际的传输，所以就不得不考虑字节序的问题。 
<br><br>5、UTF的字节序和BOM 
<br>UTF-8以字节为编码单元，没有字节序的问题。UTF-16以两个字节为编码单元，在解释一个UTF-16文本前，首先要弄清楚每个编码单元的字节序。例如收到一个&#8220;奎&#8221;的Unicode编码是594E，&#8220;乙&#8221;的Unicode编码是4E59。如果我们收到UTF-16字节流&#8220;594E&#8221;，那么这是&#8220;奎&#8221;还是&#8220;乙&#8221;？ 
<br><br>Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是&#8220;Bill Of Material&#8221;的BOM表，而是Byte Order 
Mark。BOM是一个有点小聪明的想法： <br><br>在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK 
SPACE"的字符，它的编码是FEFF。而FFFE在UCS中是不存在的字符，所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前，先传输字符"ZERO 
WIDTH NO-BREAK SPACE"。 
<br><br>这样如果接收者收到FEFF，就表明这个字节流是Big-Endian的；如果收到FFFE，就表明这个字节流是Little-Endian的。因此字符"ZERO 
WIDTH NO-BREAK SPACE"又被称作BOM。 <br><br>UTF-8不需要BOM来表明字节顺序，但可以用BOM来表明编码方式。字符"ZERO 
WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF（读者可以用我们前面介绍的编码方法验证一下）。所以如果接收者收到以EF BB 
BF开头的字节流，就知道这是UTF-8编码了。 <br><br>Windows就是使用BOM来标记文本文件的编码方式的。 <br><br>6、进一步的参考资料 
<br>本文主要参考的资料是 "Short overview of ISO-IEC 10646 and Unicode" (<a href="http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html" target="_blank">http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html</a>)。 
<br><br>我还找了两篇看上去不错的资料，不过因为我开始的疑问都找到了答案，所以就没有看： <br><br>"Understanding Unicode A 
general introduction to the Unicode Standard" (<a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter04a" target="_blank">http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter04a</a>) 
<br>"Character set encoding basics Understanding character set encodings and 
legacy encodings" (<a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter03" target="_blank">http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter03</a>) 
<br>我写过UTF-8、UCS-2、GBK相互转换的软件包，包括使用Windows API和不使用Windows 
API的版本。以后有时间的话，我会整理一下放到我的个人主页上(<a href="http://fmddlmyy.home4u.china.com/" target="_blank">http://fmddlmyy.home4u.china.com</a>)。 
<br><br>我是想清楚所有问题后才开始写这篇文章的，原以为一会儿就能写好。没想到考虑措辞和查证细节花费了很长时间，竟然从下午1:30写到9:00。希望有读者能从中受益。 
<br><br><br><br><br><br>作者Blog：<a href="http://blog.csdn.net/fmddlmyy/" target="_blank">http://blog.csdn.net/fmddlmyy/</a><br>参考资料：<a href="http://blog.csdn.net/fmddlmyy/" target="_blank">http://blog.csdn.net/fmddlmyy/</a><br></div><img src ="http://www.cppblog.com/cuijixin/aggbug/71815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2009-01-12 15:42 <a href="http://www.cppblog.com/cuijixin/archive/2009/01/12/71815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASC编码 </title><link>http://www.cppblog.com/cuijixin/archive/2009/01/12/71807.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Mon, 12 Jan 2009 06:32:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2009/01/12/71807.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/71807.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2009/01/12/71807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/71807.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/71807.html</trackback:ping><description><![CDATA[
<span style="font-family: 宋体; font-size: 12px; line-height: 16px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><table width="100%" height="250" border="0" align="center" cellpadding="0" cellspacing="1" style="font-size: 12px; line-height: 140%; font-family: 宋体; "><tbody><tr><td valign="top" bgcolor="#FFFFFF"><table width="99%" height="100" border="0" align="center" cellpadding="0" cellspacing="0" style="table-layout: fixed; word-break: break-all; font-size: 12px; line-height: 140%; font-family: 宋体; "><tbody><tr><td><p align="center"><strong><font size="4">ASC编码</font></strong></p><div align="center"><center><table cellspacing="0" bordercolordark="#ffffff" width="90%" bordercolorlight="#c0c0c0" border="1" style="font-size: 12px; line-height: 140%; font-family: 宋体; "><tbody><tr><td valign="top" bgcolor="#ffffff" colspan="8"><p align="left">目前计算机中用得最广泛的字符集及其编码，是由美国国家标准局(ANSI)制定的ASCII码（American Standard Code for Information Interchange，美国标准信息交换码），它已被国际标准化组织（ISO）定为国际标准，称为ISO 646标准。适用于所有拉丁文字字母，ASCII码有7位码和8位码两种形式。<br>因为1位二进制数可以表示（21=）2种状态：0、1；而2位二进制数可以表示（22）=4种状态：00、01、10、11；依次类推，7位二进制数可以表示（27=）128种状态，每种状态都唯一地编为一个7位的二进制码，对应一个字符（或控制码），这些码可以排列成一个十进制序号0～127。所以，7位ASCII码是用七位二进制数进行编码的，可以表示128个字符。<br>第0～32号及第127号(共34个)是控制字符或通讯专用字符，如控制符：LF（换行）、CR（回车）、FF（换页）、DEL（删除）、BEL（振铃）等；通讯专用字符：SOH（文头）、EOT（文尾）、ACK（确认）等；<br>第33～126号(共94个)是字符，其中第48～57号为0～9十个阿拉伯数字；65～90号为26个大写英文字母，97～122号为26个小写英文字母，其余为一些标点符号、运算符号等。<br>注意：在计算机的存储单元中，一个ASCII码值占一个字节(8个二进制位)，其最高位(b7)用作奇偶校验位。所谓奇偶校验，是指在代码传送过程中用来检验是否出现错误的一种方法，一般分奇校验和偶校验两种。奇校验规定：正确的代码一个字节中1的个数必须是奇数，若非奇数，则在最高位b7添1；偶校验规定：正确的代码一个字节中1的个数必须是偶数，若非偶数，则在最高位b7添1。<br>为了便于查询，以下列出ASCII码表：<br>第128～255号为扩展字符（不常用）</p></td></tr><tr align="middle" bgcolor="#dddddd"><td>ASCII码</td><td>键盘</td><td>ASCII 码</td><td>键盘</td><td>ASCII 码</td><td>键盘</td><td>ASCII 码</td><td>键盘</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">27</td><td height="10">ESC</td><td height="10">32</td><td height="10">SPACE</td><td height="10">33</td><td height="10">!</td><td height="10">34</td><td height="10">"</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">35</td><td height="10">#</td><td height="10">36</td><td height="10">$</td><td height="10">37</td><td height="10">%</td><td height="10">38</td><td height="10">&amp;</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">39</td><td height="10">'</td><td height="10">40</td><td height="10">(</td><td height="10">41</td><td height="10">)</td><td height="10">42</td><td height="10">*</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">43</td><td height="10">+</td><td height="10">44</td><td height="10">'</td><td height="10">45</td><td height="10">-</td><td height="10">46</td><td height="10">.</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">47</td><td height="10">/</td><td height="10">48</td><td height="10">0</td><td height="10">49</td><td height="10">1</td><td height="10">50</td><td height="10">2</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">51</td><td height="10">3</td><td height="10">52</td><td height="10">4</td><td height="10">53</td><td height="10">5</td><td height="10">54</td><td height="10">6</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">55</td><td height="10">7</td><td height="10">56</td><td height="10">8</td><td height="10">57</td><td height="10">9</td><td height="10">58</td><td height="10">:</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">59</td><td height="10">;</td><td height="10">60</td><td height="10">&lt;</td><td height="10">61</td><td height="10">=</td><td height="10">62</td><td height="10">></td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">63</td><td height="10">?</td><td height="10">64</td><td height="10">@</td><td height="10">65</td><td height="10">A</td><td height="10">66</td><td height="10">B</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">67</td><td height="10">C</td><td height="10">68</td><td height="10">D</td><td height="10">69</td><td height="10">E</td><td height="10">70</td><td height="10">F</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">71</td><td height="10">G</td><td height="10">72</td><td height="10">H</td><td height="10">73</td><td height="10">I</td><td height="10">74</td><td height="10">J</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">75</td><td height="10">K</td><td height="10">76</td><td height="10">L</td><td height="10">77</td><td height="10">M</td><td height="10">78</td><td height="10">N</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">79</td><td height="10">O</td><td height="10">80</td><td height="10">P</td><td height="10">81</td><td height="10">Q</td><td height="10">82</td><td height="10">R</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">83</td><td height="10">S</td><td height="10">84</td><td height="10">T</td><td height="10">85</td><td height="10">U</td><td height="10">86</td><td height="10">V</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">87</td><td height="10">W</td><td height="10">88</td><td height="10">X</td><td height="10">89</td><td height="10">Y</td><td height="10">90</td><td height="10">Z</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">91</td><td height="10">[</td><td height="10">92</td><td height="10">\</td><td height="10">93</td><td height="10">]</td><td height="10">94</td><td height="10">^</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">95</td><td height="10">_</td><td height="10">96</td><td height="10">`</td><td height="10">97</td><td height="10">a</td><td height="10">98</td><td height="10">b</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">99</td><td height="10">c</td><td height="10">100</td><td height="10">d</td><td height="10">101</td><td height="10">e</td><td height="10">102</td><td height="10">f</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">103</td><td height="10">g</td><td height="10">104</td><td height="10">h</td><td height="10">105</td><td height="10">i</td><td height="10">106</td><td height="10">j</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">107</td><td height="10">k</td><td height="10">108</td><td height="10">l</td><td height="10">109</td><td height="10">m</td><td height="10">110</td><td height="10">n</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">111</td><td height="10">o</td><td height="10">112</td><td height="10">p</td><td height="10">113</td><td height="10">q</td><td height="10">114</td><td height="10">r</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">115</td><td height="10">s</td><td height="10">116</td><td height="10">t</td><td height="10">117</td><td height="10">u</td><td height="10">118</td><td height="10">v</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">119</td><td height="10">w</td><td height="10">120</td><td height="10">x</td><td height="10">121</td><td height="10">y</td><td height="10">122</td><td height="10">z</td></tr><tr align="middle" bgcolor="#ffffff"><td height="10">123</td><td height="10">{</td><td height="10">124</td><td height="10">|</td><td height="10">125</td><td height="10">}</td><td height="10">126</td><td height="10">~</td></tr></tbody></table></center></div></td></tr></tbody></table></td></tr><tr></tr></tbody></table><br></span><img src ="http://www.cppblog.com/cuijixin/aggbug/71807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2009-01-12 14:32 <a href="http://www.cppblog.com/cuijixin/archive/2009/01/12/71807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache+php+mysql在windows下的安装与配置图解（最新版）</title><link>http://www.cppblog.com/cuijixin/archive/2008/11/07/66194.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Fri, 07 Nov 2008 02:24:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2008/11/07/66194.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/66194.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2008/11/07/66194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/66194.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/66194.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">先准备好软件：</p>
<p style="TEXT-INDENT: 2em">Apache官方下载地址：<a href="http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi" target=_blank><u><font color=#0000ff>apache_2.0.55-win32-x86-no_ssl.msi</font></u></a>，<a href="http://httpd.apache.org/download.cgi" target=_blank><u><font color=#800080>更多版本在这里</font></u></a>；</p>
<p style="TEXT-INDENT: 2em">php官方下载地址：<a href="http://cn2.php.net/get/php-5.0.5-Win32.zip/from/cn.php.net/mirror" target=_blank><u><font color=#800080>php-5.0.5-Win32.zip</font></u></a>，<a href="http://www.php.net/get/php-5.0.5-Win32.zip/from/a/mirror" target=_blank><u><font color=#0000ff>更多镜像下载地址</font></u></a>，<a href="http://www.php.net/downloads.php" target=_blank><u><font color=#0000ff>更多版本下载</font></u></a>；</p>
<p style="TEXT-INDENT: 2em">mysql官方下载地址：<a href="http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.14-win32.zip/from/http://download.softagency.net/MySQL/" target=_blank><u><font color=#0000ff>mysql-4.1.14-win32.zip</font></u></a>，<a href="http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.14-win32.zip/from/pick#mirrors" target=_blank><u><font color=#0000ff>更多镜像下载地址</font></u></a>，<a href="http://dev.mysql.com/downloads/mysql/" target=_blank><u><font color=#0000ff>更多版本下载</font></u></a>。</p>
<p style="TEXT-INDENT: 2em"><strong>一、安装Apache，配置成功一个普通网站服务器</strong></p>
<p style="TEXT-INDENT: 2em">运行下载好的&#8220;<a href="http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi" target=_blank><u><font color=#0000ff>apache_2.0.55-win32-x86-no_ssl.msi</font></u></a>&#8221;，出现如下界面：</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/3/3A/3A2809339D75314DBBF0DCAEE081B291.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">出现Apache HTTP Server 2.0.55的安装向导界面，点&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/7/7D/7DDF0DA9827A0EDD10463EC2F9C67CAD.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">确认同意软件安装使用许可条例，选择&#8220;I accept the terms in the license agreement&#8221;，点&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/B/BB/BBDFBAF0F6EFDF6CD3A627EDCA97DCD7.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">将Apache安装到Windows上的使用须知，请阅读完毕后，按&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/D/DD/DDDA0F04F06F3F46035C91D6A9FB2F9F.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">设置系统信息，在Network Domain下填入您的域名（比如：goodwaiter.com），在Server Name下填入您的服务器名称（比如：www.goodwaiter.com，也就是主机名加上域名），在Administrator's Email Address下填入系统管理员的联系电子邮件地址（比如：yinpeng@xinhuanet.com），上述三条信息仅供参考，其中联系电子邮件地址会在当系统故障时提供给访问者，三条信息均可任意填写，无效的也行。下面有两个选择，图片上选择的是为系统所有用户安装，使用默认的80端口，并作为系统服务自动启动；另外一个是仅为当前用户安装，使用端口8080，手动启动。一般选择如图所示。按&#8220;Next&#8221;继续。]</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/D/D5/D541B27C7C0C301040BA206C3067E75C.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择安装类型，Typical为默认安装，Custom为用户自定义安装，我们这里选择Custom，有更多可选项。按&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/A/A1/A1746C427910A3E191DBC5251178E1DC.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">出现选择安装选项界面，如图所示，左键点选&#8220;Apache HTTP Server 2.0.55&#8221;，选择&#8220;This feature, and all subfeatures, will be installed on local hard drive.&#8221;，即&#8220;此部分，及下属子部分内容，全部安装在本地硬盘上&#8221;。点选&#8220;Change...&#8221;，手动指定安装目录。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/7/74/74BCA25E05F4CD6D4B8A3132073A9744.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">我这里选择安装在&#8220;D:\&#8221;，各位自行选取了，一般建议不要安装在操作系统所在盘，免得操作系统坏了之后，还原操作把Apache配置文件也清除了。选&#8220;OK&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/CC/CC30BC627F229F724C85FF0E94F627F1.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">返回刚才的界面，选&#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/8/84/84D36BDCA5DBB8E339C559EAC99810FC.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">确认安装选项无误，如果您认为要再检查一遍，可以点&#8220;Back&#8221;一步步返回检查。点&#8220;Install&#8221;开始按前面设定的安装选项安装。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/9/98/980A675B1D4538DBB126D9279D950F92.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">正在安装界面，请耐心等待，直到出现下面的画面。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/2/25/25AC4569E22E9BC2263B4D6BCEF1AA19.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">安装向导成功完成，这时右下角状态栏应该出现了下面的这个绿色图标，表示Apache服务已经开始运行，按&#8220;Finish&#8221;结束Apache的软件安装</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/C1/C1527947DD583343D11543FF5905378A.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">我们来熟悉一下这个图标，很方便的，在图标上左键单击，出现如下界面，有&#8220;Start（启动）&#8221;、&#8220;Stop（停止）&#8221;、&#8220;Restart（重启动）&#8221;三个选项，可以很方便的对安装的Apache服务器进行上述操作。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/1/1A/1AAB07386D2B21E83A528902CB0CB5A2.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">好了现在我们来测试一下按默认配置运行的网站界面，在IE地址栏打&#8220;http://127.0.0.1&#8221;，点&#8220;转到&#8221;，就可以看到如下页面，表示Apache服务器已安装成功。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/9/9D/9D52D7BC2F6417340501B556B335E0F2.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">现在开始配置Apache服务器，使它更好的替我们服务，事实上，如果不配置，你的安装目录下的Apache2\htdocs文件夹就是网站的默认根目录，在里面放入文件就可以了。这里我们还是要配置一下，有什么问题或修改，配置始终是要会的，如图所示，&#8220;开始&#8221;、&#8220;所有程序&#8221;、&#8220;Apache HTTP Server 2.0.55&#8221;、&#8220;Configure Apache Server&#8221;、&#8220;Edit the Apache httpd conf Configuration file&#8221;，点击打开。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/B/B1/B1A9FE73D7EB4B8E48E3EACEDE6B1408.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">XP的记事本有了些小变化，很实用的一个功能就是可以看到文件内容的行、列位置，按下图所示，点&#8220;查看&#8221;，勾选&#8220;状态栏&#8221;，界面右下角就多了个标记，&#8220;Ln 78, Col 10&#8221;就表示&#8220;行 78，列 10&#8221;，这样可以迅速的在文件中定位，方便解说。当然，你也可以通过&#8220;编辑&#8221;，&#8220;查找&#8221;输入关键字来快速定位。每次配置文件的改变，保存后，必须在 Apache服务器重启动后生效，可以用前面讲的小图标方便的控制服务器随时&#8220;重启动&#8221;。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/5/5B/5BDD4BC454AB20790CC72C876D167302.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">现在正式开始配置Apache服务器，&#8220;Ln 228&#8221;，或者查找关键字&#8220;DocumentRoot&#8221;（也就是网站根目录），找到如下图所示地方，然后将""内的地址改成你的网站根目录，地址格式请照图上的写，主要是一般文件地址的&#8220;\&#8221;在Apache里要改成&#8220;/&#8221;。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/A/A5/A503C1AF9C3AF1F3121EAA7944A630E4.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">&#8220;Ln 253&#8221;，同样，你也可以通过查找&#8220;<directory&#8221;来定位，以后不再说明，将""内的地址改成跟documentroot的一样。< P></p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/CB/CB3C92D6D3D35479F8CA6403E4D1D19D.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">&#8220;Ln321&#8221;，DirectoryIndex（目录索引，也就是在仅指定目录的情况下，默认显示的文件名），可以添加很多，系统会根据从左至右的顺序来优先显示，以单个半角空格隔开，比如有些网站的首页是index.htm，就在光标那里加上&#8220;index.htm &#8221;文件名是任意的，不一定非得&#8220;index.html&#8221;，比如&#8220;test.php&#8221;等，都可以。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/9/9D/9D6E67CEE95CD5FE434BAE39E816C56D.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">这里有一个选择配置选项，以前可能要配置，现在好像修正过来了，不用配置了，就是强制所有输出文件的语言编码，html文件里有语言标记（，这个就是设定文档语言为gb2312）的也会强制转换。如果打开的网页出现乱码，请先检查网页内有没有上述 html语言标记，如果没有，添加上去就能正常显示了。把&#8220;# DefaultLanguage nl&#8221;前面的&#8220;# &#8221;去掉，把&#8220;nl&#8221;改成你要强制输出的语言，中文是&#8220;zh-cn&#8221;，保存，关闭。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/E/ED/EDC3C1B7C5F2C737FF95545697EB7A79.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">好了，简单的Apache配置就到此结束了，现在利用先前的小图标重启动，所有的配置就生效了，你的网站就成了一个网站服务器，如果你加载了防火墙，请打开80或8080端口，或者允许Apache程序访问网络，否则别人不能访问。如果你有公网IP（一般ADSL或电话拨号上网的都是），就可以邀请所有能上网的朋友访问使用http://你的IP地址（IP地址查询可访问http://www.goodwaiter.com，查询内容内即是）你的网站了；如果你没有公网IP，也可以把内网IP地址告诉局域网内的其它用户，让他们通过http://你的内网IP地址，访问你的网站。</p>
<p style="TEXT-INDENT: 2em"><strong>二、php的安装、以module方式，将php与apache结合使你的网站服务器支持php服务器脚本程序</strong></p>
<p style="TEXT-INDENT: 2em">将下载的php安装文件<a href="http://cn2.php.net/get/php-5.0.5-Win32.zip/from/cn.php.net/mirror" target=_blank>php-5.0.5-Win32.zip</a>右键解压缩。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/0/06/06D391A2654006E29578EE1E22F0F4D8.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">指定解压缩的位置，我的设定在&#8220;D:\php&#8221;</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/5/50/507EE3FE500CA51633D57359F245D9E6.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">查看解压缩后的文件夹内容，找到&#8220;php.ini-dist&#8221;文件，将其重命名为&#8220;php.ini&#8221;，打开编辑，找到下面图中的地方， Ln385，有一个&#8220;register_globals = Off&#8221;值，这个值是用来打开全局变量的，比如表单送过来的值，如果这个值设为&#8220;Off&#8221;，就只能用&#8220;$_POST['变量名']、$_GET['变量名 ']&#8221;等来取得送过来的值，如果设为&#8220;On&#8221;，就可以直接使用&#8220;$变量名&#8221;来获取送过来的值，当然，设为&#8220;Off&#8221;就比较安全，不会让人轻易将网页间传送的数据截取。这个值是否改成&#8220;On&#8221;就看自己感觉了，是安全重要还是方便重要？</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/6/6A/6AFE57A7C79A3120BC7C460D04A6DD59.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">这里还有一个地方要编辑，功能就是使php能够直接调用其它模块，比如访问mysql，如下图所示，Ln563，选择要加载的模块，去掉前面的 &#8220;;&#8221;，就表示要加载此模块了，加载的越多，占用的资源也就多一点，不过也多不到哪去，比如我要用mysql，就要把&#8220;;extension= php_mysql.dll&#8221;前的&#8220;;&#8221;去掉。所有的模块文件都放在php解压缩目录的&#8220;ext&#8221;之下，我这里的截图是把所有能加载的模块都加载上去了，前面的&#8220;;&#8221;没去掉的，是因为&#8220;ext&#8221;目录下默认没有此模块，加载会提示找不到文件而出错。这里只是参考，一般不需要加载这么多，需要的加载上就可以了，编辑好后保存，关闭。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/CF/CF4C9456C36E36B3FA0E54863D9FF60B.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">如果上一步加载了其它模块，就要指明模块的位置，否则重启Apache的时候会提示&#8220;找不到指定模块&#8221;的错误，这里介绍一种最简单的方法，直接将php安装路径、里面的ext路径指定到windows系统路径中——在&#8220;我的电脑&#8221;上右键，&#8220;属性&#8221;，选择&#8220;高级&#8221;标签，点选&#8220;环境变量&#8221;，在&#8220;系统变量&#8221;下找到&#8220;Path&#8221;变量，选择，双击或点击&#8220;编辑&#8221;，将&#8220;;D:\php;D:\php\ext&#8221;加到原有值的后面，当然，其中的&#8220;D:\php&#8221; 是我的安装目录，你要将它改为自己的php安装目录，如下图所示，全部确定。系统路径添加好后要重启电脑才能生效，可以现在重启，也可以在所有软件安装或配置好后重启。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/3/35/35342B3E3999B8E486E6B8CE5D73EF76.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">现在开始将php以module方式与Apache相结合，使php融入Apache，照先前的方法打开Apache的配置文件，Ln 173，找到这里，添加进如图所示选中的两行，第一行&#8220;LoadModule php5_module D:/php/php5apache2.dll&#8221;是指以module方式加载php，第二行&#8220;PHPIniDir "D:/php"&#8221;是指明php的配置文件php.ini的位置，是当然，其中的&#8220;D:/php&#8221;要改成你先前选择的php解压缩的目录。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/5/52/52E7ADAF91BE46D0EB48BD5982F00246.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">还是Apache的配置文件，Ln 757，加入&#8220;AddType application/x-httpd-php .php&#8221;、&#8220;AddType application/x-httpd-php .html&#8221;两行，你也可以加入更多，实质就是添加可以执行php的文件类型，比如你再加上一行&#8220;AddType application/x-httpd-php .htm&#8221;，则.htm文件也可以执行php程序了，你甚至还可以添加上一行&#8220;AddType application/x-httpd-php .txt&#8221;，让普通的文本文件格式也能运行php程序。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/6/60/60C2E070B9A9690345AD08437DAAA1F9.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">前面所说的目录默认索引文件也可以改一下，因为现在加了php，有些文件就直接存为.php了，我们也可以把&#8220;index.php&#8221;设为默认索引文件，优先顺序就自己排了，我的是放在第一位。编辑完成，保存，关闭。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/4/43/436180CE85AF964CC9E8073AA0C869B3.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">现在，php的安装，与Apache的结合已经全部完成，用屏幕右下角的小图标重启Apache，你的Apache服务器就支持了php。</p>
<p style="TEXT-INDENT: 2em"><strong>三、mysql的安装，与php、Apache相结合</strong></p>
<p style="TEXT-INDENT: 2em">打开下载的mysql安装文件<a href="http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.14-win32.zip/from/http://download.softagency.net/MySQL/" target=_blank>mysql-4.1.14-win32.zip</a>，双击解压缩，运行&#8220;setup.exe&#8221;，出现如下界面</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/A/AC/AC61EC8296DBDBD8D2DF52CA87BDCDA4.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">mysql安装向导启动，按&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/B/B0/B07BEE23ACD6199EC9A30481D1979CF0.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择安装类型，有&#8220;Typical（默认）&#8221;、&#8220;Complete（完全）&#8221;、&#8220;Custom（用户自定义）&#8221;三个选项，我们选择&#8220;Custom&#8221;，有更多的选项，也方便熟悉安装过程</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/CD/CD0A09D363DDF74DCBF691AC9879FBB6.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">在&#8220;Developer Components（开发者部分）&#8221;上左键单击，选择&#8220;This feature, and all subfeatures, will be installed on local hard drive.&#8221;，即&#8220;此部分，及下属子部分内容，全部安装在本地硬盘上&#8221;。在上面的&#8220;MySQL Server（mysql服务器）&#8221;、&#8220;Client Programs（mysql客户端程序）&#8221;、&#8220;Documentation（文档）&#8221;也如此操作，以保证安装所有文件。点选&#8220;Change...&#8221;，手动指定安装目录。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/C5/C5712D380D06A649EAA7D446D8ED91ED.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">填上安装目录，我的是&#8220;D:\mysql&#8221;，也建议不要放在与操作系统同一分区，这样可以防止系统备份还原的时候，数据被清空。按&#8220;OK&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/D/DC/DC7479D846AA302D647939C67ADC0B95.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">返回刚才的界面，按&#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/7/75/7504524A73B06D086BFBBED104FB468B.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">确认一下先前的设置，如果有误，按&#8220;Back&#8221;返回重做。按&#8220;Install&#8221;开始安装。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/5/54/54196C507E66B459E82A3C65243ADE40.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">正在安装中，请稍候，直到出现下面的界面</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/F/FB/FBA5F1B304F49FBEAA68BA2C57572661.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">这里是询问你是否要注册一个mysql.com的账号，或是使用已有的账号登陆mysql.com，一般不需要了，点选&#8220;Skip Sign-Up&#8221;，按&#8220;Next&#8221;略过此步骤。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/1/10/10FC94552347132116DDAFF977AE747F.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">现在软件安装完成了，出现上面的界面，这里有一个很好的功能，mysql配置向导，不用向以前一样，自己手动乱七八糟的配置my.ini了，将 &#8220;Configure the Mysql Server now&#8221;前面的勾打上，点&#8220;Finish&#8221;结束软件的安装并启动mysql配置向导。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/CA/CA1EC64A318715671218803B9B4A2030.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">mysql配置向导启动界面，按&#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/6/6E/6E50CE778965049B10726569DF31202F.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择配置方式，&#8220;Detailed Configuration（手动精确配置）&#8221;、&#8220;Standard Configuration（标准配置）&#8221;，我们选择&#8220;Detailed Configuration&#8221;，方便熟悉配置过程。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/1/13/134E791C5A1CEBC9B1039907C031190B.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择服务器类型，&#8220;Developer Machine（开发测试类，mysql占用很少资源）&#8221;、&#8220;Server Machine（服务器类型，mysql占用较多资源）&#8221;、&#8220;Dedicated MySQL Server Machine（专门的数据库服务器，mysql占用所有可用资源）&#8221;，大家根据自己的类型选择了，一般选&#8220;Server Machine&#8221;，不会太少，也不会占满。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/1/18/1809D363081314946A59263CE67BEE38.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择mysql数据库的大致用途，&#8220;Multifunctional Database（通用多功能型，好）&#8221;、&#8220;Transactional Database Only（服务器类型，专注于事务处理，一般）&#8221;、&#8220;Non-Transactional Database Only（非事务处理型，较简单，主要做一些监控、记数用，对MyISAM数据类型的支持仅限于non-transactional），随自己的用途而选择了，我这里选择&#8220;Transactional Database Only&#8221;，按&#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/9/97/974B9FFA76C51DB4AD15F691323083D6.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">对InnoDB Tablespace进行配置，就是为InnoDB 数据库文件选择一个存储空间，如果修改了，要记住位置，重装的时候要选择一样的地方，否则可能会造成数据库损坏，当然，对数据库做个备份就没问题了，这里不详述。我这里没有修改，使用用默认位置，直接按&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/E/EC/EC8F7F964E5E83DDB7697FB7F33D51CC.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择您的网站的一般mysql访问量，同时连接的数目，&#8220;Decision Support(DSS)/OLAP（20个左右）&#8221;、&#8220;Online Transaction Processing(OLTP)（500个左右）&#8221;、&#8220;Manual Setting（手动设置，自己输一个数）&#8221;，我这里选&#8220;Online Transaction Processing(OLTP)&#8221;，自己的服务器，应该够用了，按&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/9/98/98B3746C9428165F72A220D17159CC4F.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">是否启用TCP/IP连接，设定端口，如果不启用，就只能在自己的机器上访问mysql数据库了，我这里启用，把前面的勾打上，Port Number：3306，按&#8220;Next&#8221;继续</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/C5/C5B6A3E03A91E263A59C25F3AF7C5292.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">这个比较重要，就是对mysql默认数据库语言编码进行设置，第一个是西文编码，第二个是多字节的通用utf8编码，都不是我们通用的编码，这里选择第三个，然后在Character Set那里选择或填入&#8220;gbk&#8221;，当然也可以用&#8220;gb2312&#8221;，区别就是gbk的字库容量大，包括了gb2312的所有汉字，并且加上了繁体字、和其它乱七八糟的字——使用mysql的时候，在执行数据操作命令之前运行一次&#8220;SET NAMES GBK;&#8221;（运行一次就行了，GBK可以替换为其它值，视这里的设置而定），就可以正常的使用汉字（或其它文字）了，否则不能正常显示汉字。按 &#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/9/9E/9ED4307E1B58960DC5FC4FEF83FF2993.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">选择是否将mysql安装为windows服务，还可以指定Service Name（服务标识名称），是否将mysql的bin目录加入到Windows PATH（加入后，就可以直接使用bin下的文件，而不用指出目录名，比如连接，&#8220;mysql.exe -uusername -ppassword;&#8221;就可以了，不用指出mysql.exe的完整地址，很方便），我这里全部打上了勾，Service Name不变。按&#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/8/88/8850E209E64D8FE8D1C76B869FE2F261.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">这一步询问是否要修改默认root用户（超级管理）的密码（默认为空），&#8220;New root password&#8221;如果要修改，就在此填入新密码（如果是重装，并且之前已经设置了密码，在这里更改密码可能会出错，请留空，并将&#8220;Modify Security Settings&#8221;前面的勾去掉，安装配置完成后另行修改密码），&#8220;Confirm（再输一遍）&#8221;内再填一次，防止输错。&#8220;Enable root access from remote machines（是否允许root用户在其它的机器上登陆，如果要安全，就不要勾上，如果要方便，就勾上它）&#8221;。最后&#8220;Create An Anonymous Account（新建一个匿名用户，匿名用户可以连接数据库，不能操作数据，包括查询）&#8221;，一般就不用勾了，设置完毕，按&#8220;Next&#8221;继续。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/A/A3/A30C1F0177779C4806A7F04D0F00B5DA.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">确认设置无误，如果有误，按&#8220;Back&#8221;返回检查。按&#8220;Execute&#8221;使设置生效。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/F/F0/F08C52F35BE19658BD9639A42157F92B.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">设置完毕，按&#8220;Finish&#8221;结束mysql的安装与配置——这里有一个比较常见的错误，就是不能&#8220;Start service&#8221;，一般出现在以前有安装mysql的服务器上，解决的办法，先保证以前安装的mysql服务器彻底卸载掉了；不行的话，检查是否按上面一步所说，之前的密码是否有修改，照上面的操作；如果依然不行，将mysql安装目录下的data文件夹备份，然后删除，在安装完成后，将安装生成的 data文件夹删除，备份的data文件夹移回来，再重启mysql服务就可以了，这种情况下，可能需要将数据库检查一下，然后修复一次，防止数据出错。</p>
<p style="TEXT-INDENT: 2em">与Apache及php相结合，前面已提过，这里再说一下，在php安装目录下，找到先前重命名并编辑过的 php.ini，如下图所示，Ln563，把&#8220;;extension=php_mysql.dll&#8221;前的&#8220;;&#8221;去掉，加载mysql模块。保存，关闭后，重启apache就可以了。这里也可以选择其它要加载的模块，去掉前面的&#8220;;&#8221;，就表示要加载此模块了，加载的越多，占用的资源也就多一点，不过也多不到哪去。所有的模块文件都放在php解压缩目录的&#8220;ext&#8221;之下，我这里的截图是把所有能加载的模块都加载上去了，前面的&#8220;;&#8221;没去掉的，是因为&#8220;ext&#8221; 目录下默认没有此模块，加载会提示找不到文件而出错。这里只是参考，一般不需要加载这么多，需要的加载上就可以了，编辑好后保存，关闭。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/C/CF/CF4C9456C36E36B3FA0E54863D9FF60B.gif" border=0></center>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em"></p>
<p style="TEXT-INDENT: 2em">同样，加载了模块后，就要指明模块的位置，否则重启Apache的时候会提示&#8220;找不到指定模块&#8221;的错误，这里介绍一种最简单的方法，直接将 php安装路径、里面的ext路径指定到windows系统路径中——在&#8220;我的电脑&#8221;上右键，&#8220;属性&#8221;，选择&#8220;高级&#8221;标签，点选&#8220;环境变量&#8221;，在&#8220;系统变量&#8221;下找到&#8220;Path&#8221;变量，选择，双击或点击&#8220;编辑&#8221;，将&#8220;;D:\php;D:\php\ext&#8221;加到原有值的后面，当然，其中的&#8220;D:\php&#8221;是我的安装目录，你要将它改为自己的php安装目录，如下图所示，全部确定。系统路径添加好后要重启电脑才能生效，可以现在重启，也可以在所有软件安装或配置好后重启。</p>
<p style="TEXT-INDENT: 2em">
<center><img src="http://cimg.163.com/catchpic/3/35/35342B3E3999B8E486E6B8CE5D73EF76.gif" border=0></center>
<img src ="http://www.cppblog.com/cuijixin/aggbug/66194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2008-11-07 10:24 <a href="http://www.cppblog.com/cuijixin/archive/2008/11/07/66194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX信息命令查看大全</title><link>http://www.cppblog.com/cuijixin/archive/2008/11/07/66189.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Fri, 07 Nov 2008 01:36:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2008/11/07/66189.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/66189.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2008/11/07/66189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/66189.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/66189.html</trackback:ping><description><![CDATA[来源: ChinaUnix博客 　日期： 2008.07.10 19:47　<br>LINUX信息命令查看大全<br># uname -a&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看内核/操作系统/CPU信息<br># head -n 1 /etc/issue&nbsp; &nbsp;# 查看操作系统版本<br># cat /proc/cpuinfo&nbsp; &nbsp;&nbsp; &nbsp;# 查看CPU信息<br># hostname&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看计算机名<br># lspci -tv&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 列出所有PCI设备<br># lsusb -tv&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 列出所有USB设备<br># lsmod&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 列出加载的内核模块<br># env&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 查看环境变量资源<br># free -m&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看内存使用量和交换区使用量<br># df -h&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看各分区使用情况<br># du -sh&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看指定目录的大小<br># grep MemTotal /proc/meminfo&nbsp; &nbsp;# 查看内存总量<br># grep MemFree /proc/meminfo&nbsp; &nbsp; # 查看空闲内存量<br># uptime&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 查看系统运行时间、用户数、负载<br># cat /proc/loadavg&nbsp; &nbsp;&nbsp; &nbsp;# 查看系统负载磁盘和分区<br># mount | column -t&nbsp; &nbsp;&nbsp; &nbsp;# 查看挂接的分区状态<br># fdisk -l&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看所有分区<br># swapon -s&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 查看所有交换分区<br># hdparm -i /dev/hda&nbsp; &nbsp;&nbsp;&nbsp;# 查看磁盘参数(仅适用于IDE设备)<br># dmesg | grep IDE&nbsp; &nbsp;&nbsp; &nbsp; # 查看启动时IDE设备检测状况网络<br># ifconfig&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看所有网络接口的属性<br># iptables -L&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看防火墙设置<br># route -n&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 查看路由表<br># netstat -lntp&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看所有监听端口<br># netstat -antp&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看所有已经建立的连接<br># netstat -s&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看网络统计信息进程<br># ps -ef&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 查看所有进程<br># top&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# 实时显示进程状态用户<br># w&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看活动用户<br># id&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看指定用户信息<br># last&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看用户登录日志<br># cut -d: -f1 /etc/passwd&nbsp; &nbsp;# 查看系统所有用户<br># cut -d: -f1 /etc/group&nbsp; &nbsp; # 查看系统所有组<br># crontab -l&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看当前用户的计划任务服务<br># chkconfig --list&nbsp; &nbsp;&nbsp; &nbsp; # 列出所有系统服务<br># chkconfig --list | grep on&nbsp; &nbsp; # 列出所有启动的系统服务程序<br># rpm -qa&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; # 查看所有安装的软件包<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br><strong>本文来自ChinaUnix博客，如果查看原文请点：</strong><a href="http://blog.chinaunix.net/u2/72691/showart_1078320.html" target=_blank><u><font color=#0000ff>http://blog.chinaunix.net/u2/72691/showart_1078320.html</font></u></a> 
<img src ="http://www.cppblog.com/cuijixin/aggbug/66189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2008-11-07 09:36 <a href="http://www.cppblog.com/cuijixin/archive/2008/11/07/66189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：g++参数说明 </title><link>http://www.cppblog.com/cuijixin/archive/2008/08/04/58015.html</link><dc:creator>随意门</dc:creator><author>随意门</author><pubDate>Mon, 04 Aug 2008 14:50:00 GMT</pubDate><guid>http://www.cppblog.com/cuijixin/archive/2008/08/04/58015.html</guid><wfw:comment>http://www.cppblog.com/cuijixin/comments/58015.html</wfw:comment><comments>http://www.cppblog.com/cuijixin/archive/2008/08/04/58015.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuijixin/comments/commentRss/58015.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuijixin/services/trackbacks/58015.html</trackback:ping><description><![CDATA[<strong><font color=#295200 size=5>转：g++参数说明</font></strong> <br><br>被转载作者email(<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#112;&#105;&#97;&#110;&#111;&#112;&#97;&#110;&#64;&#98;&#101;&#101;&#115;&#104;&#105;&#112;&#46;&#99;&#111;&#109;"><u><font color=#0000ff>pianopan@beeship.com</font></u></a>&nbsp;).&nbsp;&nbsp;<br><br>
<div id=article_main _element_extended_="true">[介绍]&nbsp;&nbsp; <br>gcc&nbsp;and&nbsp;g++分别是gnu的c&nbsp;&amp;&nbsp;c++编译器&nbsp;&nbsp; <br><br>gcc/g++在执行编译工作的时候，总共需要4步&nbsp;&nbsp; <br><br>1.预处理,生成.i的文件&nbsp;&nbsp; <br>2.将预处理后的文件不转换成汇编语言,生成文件.s&nbsp;&nbsp; <br>3.有汇编变为目标代码(机器代码)生成.o的文件&nbsp;&nbsp; <br>4.连接目标代码,生成可执行程序&nbsp;&nbsp; <br><br><br>[参数详解]&nbsp;&nbsp; <br><br>-x&nbsp;language&nbsp;filename&nbsp;&nbsp;&nbsp; <br>　　&nbsp;设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根&nbsp;&nbsp; <br>　　&nbsp;据约定C语言的后缀名称是.c的，而C++的后缀名是.C或者.cpp,如果&nbsp;&nbsp; <br>　　&nbsp;你很个性，决定你的C代码文件的后缀名是.pig&nbsp;哈哈，那你就要用这&nbsp;&nbsp; <br>　　&nbsp;个参数,这个参数对他后面的文件名都起作用，除非到了下一个参数&nbsp;&nbsp; <br>　　&nbsp;的使用。&nbsp;&nbsp; <br>　　&nbsp;可以使用的参数吗有下面的这些&nbsp;&nbsp; <br>　　　　&nbsp;`c&#8217;,&nbsp;`objective-c&#8217;,&nbsp;`c-header&#8217;,&nbsp;`c++&#8217;,&nbsp;`cpp-output&#8217;,&nbsp;&nbsp;&nbsp; <br>　　　　&nbsp;`assembler&#8217;,&nbsp;and&nbsp;`assembler-with-cpp&#8217;.&nbsp;&nbsp; <br>　　&nbsp;看到英文，应该可以理解的。&nbsp;&nbsp; <br>　　&nbsp;例子用法:&nbsp;&nbsp; <br>　　&nbsp;gcc&nbsp;-x&nbsp;c&nbsp;hello.pig&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-x&nbsp;none&nbsp;filename&nbsp;&nbsp; <br>　　关掉上一个选项，也就是让gcc根据文件名后缀，自动识别文件类型&nbsp;&nbsp; <br>　　例子用法:&nbsp;&nbsp; <br>　　gcc&nbsp;-x&nbsp;c&nbsp;hello.pig&nbsp;-x&nbsp;none&nbsp;hello2.c&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-c&nbsp;&nbsp;&nbsp; <br>　　只激活预处理,编译,和汇编,也就是他只把程序做成obj文件&nbsp;&nbsp; <br>　　例子用法:&nbsp;&nbsp; <br>　　gcc&nbsp;-c&nbsp;hello.c&nbsp;&nbsp; <br>　　他将生成.o的obj文件&nbsp;&nbsp;&nbsp; <br><br>-S&nbsp;&nbsp; <br>　　只激活预处理和编译，就是指把文件编译成为汇编代码。&nbsp;&nbsp; <br>　　例子用法&nbsp;&nbsp; <br>　　gcc&nbsp;-S&nbsp;hello.c&nbsp;&nbsp; <br>　　他将生成.s的汇编代码，你可以用文本编辑器察看&nbsp;&nbsp; <br><br>-E&nbsp;&nbsp; <br>　　只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里&nbsp;&nbsp; <br>　　面.&nbsp;&nbsp; <br>　　例子用法:&nbsp;&nbsp; <br>　　gcc&nbsp;-E&nbsp;hello.c&nbsp;&gt;&nbsp;pianoapan.txt&nbsp;&nbsp; <br>　　gcc&nbsp;-E&nbsp;hello.c&nbsp;|&nbsp;more&nbsp;&nbsp; <br>　　慢慢看吧,一个hello&nbsp;word&nbsp;也要与处理成800行的代码&nbsp;&nbsp; <br><br>-o&nbsp;&nbsp; <br>　　制定目标名称,缺省的时候,gcc&nbsp;编译出来的文件是a.out,很难听,如果&nbsp;&nbsp; <br>　　你和我有同感，改掉它,哈哈&nbsp;&nbsp; <br>　　例子用法&nbsp;&nbsp; <br>　　gcc&nbsp;-o&nbsp;hello.exe&nbsp;hello.c&nbsp;(哦,windows用习惯了)&nbsp;&nbsp; <br>　　gcc&nbsp;-o&nbsp;hello.asm&nbsp;-S&nbsp;hello.c&nbsp;&nbsp; <br><br>-pipe&nbsp;&nbsp; <br>　　使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问&nbsp;&nbsp; <br>　　题&nbsp;&nbsp; <br>　　gcc&nbsp;-pipe&nbsp;-o&nbsp;hello.exe&nbsp;hello.c&nbsp;&nbsp; <br><br>-ansi&nbsp;&nbsp; <br>　　关闭gnu&nbsp;c中与ansi&nbsp;c不兼容的特性,激活ansi&nbsp;c的专有特性(包括禁止一&nbsp;&nbsp; <br>　　些asm&nbsp;inline&nbsp;typeof关键字,以及UNIX,vax等预处理宏,&nbsp;&nbsp; <br><br>-fno-asm&nbsp;&nbsp; <br>　　此选项实现ansi选项的功能的一部分，它禁止将asm,inline和typeof用作&nbsp;&nbsp; <br>　　关键字。&nbsp;&nbsp; <br>　　　　&nbsp;&nbsp; <br>-fno-strict-prototype&nbsp;&nbsp; <br>　　只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式&nbsp;&nbsp; <br>　　的对参数的个数和类型说明,而不是没有参数.&nbsp;&nbsp; <br>　　而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说&nbsp;&nbsp; <br>　　明的类型&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-fthis-is-varialble&nbsp;&nbsp; <br>　　就是向传统c++看齐,可以使用this当一般变量使用.&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-fcond-mismatch&nbsp;&nbsp; <br>　　允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-funsigned-char&nbsp;&nbsp; <br>-fno-signed-char&nbsp;&nbsp; <br>-fsigned-char&nbsp;&nbsp; <br>-fno-unsigned-char&nbsp;&nbsp; <br>　　这四个参数是对char类型进行设置,决定将char类型设置成unsigned&nbsp;char(前&nbsp;&nbsp; <br>　　两个参数)或者&nbsp;signed&nbsp;char(后两个参数)&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-include&nbsp;file&nbsp;&nbsp; <br>　　包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以&nbsp;&nbsp; <br>　　用它设定,功能就相当于在代码中使用#include&lt;filename&gt;&nbsp;&nbsp; <br>　　例子用法:&nbsp;&nbsp; <br>　　gcc&nbsp;hello.c&nbsp;-include&nbsp;/root/pianopan.h&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-imacros&nbsp;file&nbsp;&nbsp; <br>　　将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件&nbsp;&nbsp; <br>　　中&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Dmacro&nbsp;&nbsp; <br>　　相当于C语言中的#define&nbsp;macro&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Dmacro=defn&nbsp;&nbsp; <br>　　相当于C语言中的#define&nbsp;macro=defn&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Umacro&nbsp;&nbsp; <br>　　相当于C语言中的#undef&nbsp;macro&nbsp;&nbsp; <br><br>-undef&nbsp;&nbsp; <br>　　取消对任何非标准宏的定义&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Idir&nbsp;&nbsp; <br>　　在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头&nbsp;&nbsp; <br>　　文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他&nbsp;&nbsp; <br>　　回先在你所制定的目录查找,然后再按常规的顺序去找.&nbsp;&nbsp; <br>　　对于#include&lt;file&gt;,gcc/g++会到-I制定的目录查找,查找不到,然后将到系&nbsp;&nbsp; <br>　　统的缺省的头文件目录查找&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-I-&nbsp;&nbsp; <br>　　就是取消前一个参数的功能,所以一般在-Idir之后使用&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-idirafter&nbsp;dir&nbsp;&nbsp; <br>　　在-I的目录里面查找失败,讲到这个目录里面查找.&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-iprefix&nbsp;prefix&nbsp;&nbsp; <br>-iwithprefix&nbsp;dir&nbsp;&nbsp; <br>　　一般一起使用,当-I的目录查找失败,会到prefix+dir下查找&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-nostdinc&nbsp;&nbsp; <br>　　使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确&nbsp;&nbsp; <br>　　限定头文件的位置&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-nostdin&nbsp;C++&nbsp;&nbsp; <br>　　规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建&nbsp;&nbsp; <br>　　libg++库使用&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-C&nbsp;&nbsp; <br>　　在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序，用这个很&nbsp;&nbsp; <br>　　方便的&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-M&nbsp;&nbsp; <br>　　生成文件关联的信息。包含目标文件所依赖的所有源代码&nbsp;&nbsp; <br>　　你可以用gcc&nbsp;-M&nbsp;hello.c来测试一下，很简单。&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-MM&nbsp;&nbsp; <br>　　和上面的那个一样，但是它将忽略由#include&lt;file&gt;造成的依赖关系。&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-MD&nbsp;&nbsp; <br>　　和-M相同，但是输出将导入到.d的文件里面&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-MMD&nbsp;&nbsp; <br>　　和-MM相同，但是输出将导入到.d的文件里面&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Wa,option&nbsp;&nbsp; <br>　　此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选&nbsp;&nbsp; <br>　　项,然后传递给会汇编程序&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Wl.option&nbsp;&nbsp; <br>　　此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选&nbsp;&nbsp; <br>　　项,然后传递给会连接程序.&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br><br>-llibrary&nbsp;&nbsp;&nbsp; <br>　　制定编译的时候使用的库&nbsp;&nbsp; <br>　　例子用法&nbsp;&nbsp; <br>　　gcc&nbsp;-lcurses&nbsp;hello.c&nbsp;&nbsp; <br>　　使用ncurses库编译程序&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-Ldir&nbsp;&nbsp; <br>　　制定编译的时候，搜索库的路径。比如你自己的库，可以用它制定目录，不然&nbsp;&nbsp; <br>　　编译器将只在标准库的目录找。这个dir就是目录的名称。&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-O0&nbsp;&nbsp; <br>-O1&nbsp;&nbsp; <br>-O2&nbsp;&nbsp; <br>-O3&nbsp;&nbsp; <br>　　编译器的优化选项的4个级别，-O0表示没有优化,-O1为缺省值，-O3优化级别最&nbsp;&nbsp; <br>　　高　　&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-g&nbsp;&nbsp; <br>　　只是编译器，在编译的时候，产生条是信息。&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-gstabs&nbsp;&nbsp; <br>　　此选项以stabs格式声称调试信息,但是不包括gdb调试信息.&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-gstabs+&nbsp;&nbsp; <br>　　此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.&nbsp;&nbsp; <br>　　&nbsp;&nbsp; <br>-ggdb&nbsp;&nbsp; <br>　　此选项将尽可能的生成gdb的可以使用的调试信息.&nbsp;&nbsp; <br><br><br>[参考资料]&nbsp;&nbsp; <br>-Linux/UNIX高级编程&nbsp;&nbsp; <br>　　中科红旗软件技术有限公司编著.清华大学出版社出版&nbsp;</div>
<img src ="http://www.cppblog.com/cuijixin/aggbug/58015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuijixin/" target="_blank">随意门</a> 2008-08-04 22:50 <a href="http://www.cppblog.com/cuijixin/archive/2008/08/04/58015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>