用VC2005 IDE编译APACHE源代码

      想必学习apache原代码的人都希望亲自编译一下apache。俗话说,万事开头难。在winxp下用vc2005 ide编译apache源码并不是一件轻松的事,还真让我郁闷了好几天。希望大家不要因为开始的一点点困难就丧失了学习apache的积极性:)

step1 :安装工具:
        安装SDK;
        安装VC++2005 Express;
        安装awk;
 
step2 下载源代码:

step3 编译源代码:
 
在编译过程中,经常会出现以下三类错误:
  •  class 1:unresolve error,错误如下:
     Creating library ./Debug/libapr-1.lib and object ./Debug/libapr-1.exp
     filestat.obj : error LNK2019: unresolved external symbol __imp__AllocateAndInitializeSid@44 referenced in function _resolve_prot
     filestat.obj : error LNK2019: unresolved external symbol __imp__FreeSid@4 referenced in function _free_world
     rand.obj : error LNK2019: unresolved external symbol __imp__CryptReleaseContext@8 referenced in function _apr_generate_random_bytes@8 rand.obj : error LNK2019: unresolved external symbol __imp__CryptGenRandom@12 referenced in function _apr_generate_random_bytes@8

  • class 2:rc.exe error, 错误如下:
     fatal error RC1107: invalid usage; use RC /? for Help
     Project : error PRJ0002 : Error result 1 returned from 'C:/Program  Files/Microsoft Visual Studio 8/VC/bin/rc.exe'.
     Build log was saved at "file://d:/Tools/Apache/httpd-2.2.4/Debug/BuildLog.htm"
     libhttpd - 1 error(s), 0 warning(s)
  • class 3:copy error, 错误如下:
     NMAKE : fatal error U1077: 'copy' : return code '0x1'
step4 消除错误:
  •  class 1:unresolve error;http://www.apachelounge.com/forum/viewtopic.php?t=575给出了解决方法:
       <VC2005>表示VC2005的安装目录,我的是C:/Program Files/Microsoft Visual Studio 8
       <SDK>表示SDK的安装目录,我的是C:/Program Files/Microsoft Platform SDK
       1. 在<VC2005>/VC下新建文件夹PlatformSDK;
       2. 分别将SDK下的bin、lib、include拷贝到PlatformSDK;
       3. 修改 <VC2005>/VC/VCProjectDefaults/corewin_express.vsprops,将
         AdditionalDependencies="kernel32.lib"
         修改为
         AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
       4. 重启VC++再次编译解决上述问题;
       5. VC2005安装时还会有一些其它的设置问题,可以参照:     http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk 
  • class 2: rc.exe error;
    http://www.apachelounge.com/forum/viewtopic.php?p=6315给出了解决方法:
    导致这种错误的原因是Resource Preprocessor Definitions 中定义了VC++无法识别的字符。在所有报错的工程中点击Properties->Configuration Properties->Resources->General->Preprocessor Definitions去掉双引号、将字符串中的空格去掉,比如
    修改前:LONG_NAME="Apache HTTP Server Core"
    修改后:LONG_NAME=ApacheHTTPServerCore
  •  class 3:copy error;
      奇怪的是解决了class2的错误之后,这个错误也随之不见了:)  
        顺便说一下,问题的解决可能看起来很简单,但是只有解决问题的时候才知道其中的艰难。有些时候用一些看上去很笨的方法去解决,能达到很好的效果。在解决第一类问题的过程中,开始我想尽了各种关键词去搜索问题的解决方法,但是都没有找到合适的答案。最后,没办法了就直接把vc告警copy到google搜索栏随便试一下,没想到居然找到了问题的答案,也算是意外之喜吧。有了经验,搞定后面的问题就显得很容易了。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值