设为首页 收藏本站
查看: 1160|回复: 0

[经验分享] Windows下编译Apache

[复制链接]

尚未签到

发表于 2018-11-26 09:54:18 | 显示全部楼层 |阅读模式
  注:文章中提到的一些文件,如x86masm_1.13.pl、x86masm_1.13.pl、pq_compat.h以及store.h都可以在我的CSDN下载资源里找到~
  公元2012.04.14号晚上,我开始编译自己的Apache,中间经历了多少痛苦不堪的过程已经记不清了,感到欣慰的是,我发现自己真的变了~
  我不再是大学里的那个小毛孩儿了,我想去做什么就会立即做,而不是再用各种理由去推脱自己,结果只能什么都学不到,什么都做不好。
  现在的我对自己的责任心强了许多,原来总以为自己很成熟,甚至觉得别人不理解自己,现在才知道原来是多么的愚蠢,借口永远找不完,我可以找各种理由不去吃饭,通宵玩游戏,逃课,甚至一个月来北京一次,来陪我的女朋友,而自己确是穷的连饭都吃不上,几个哥们轮流供我http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif
  现在的我,已经懂得照顾自己,虽然还是有些懒,但总归爱干净了,也不会再为了玩游戏而熬到半夜,熬到半夜多半是在看书,调程序~还有一半是陪女朋友呵呵,只要是陪女朋友,干啥都高兴哈哈!
  言归正传,写写我的编译历程吧~
  源代码版本:Zlib-1.2.6、OpenSSL-1.0.1、Apache-2.2.22、ActivePerl-5.12.4.1205、awk95.exe
  下面这一段是复制别人的呵~主要是这些都是一样的,没必要在自己去写,而且别人找到的资源比我的也要好,我主要说的是自己在编译中遇到的问题和解决方案。毕竟大家编译自己的Apache用的版本都不是同一个,所以,如果有和我用一样版本的源代码编译的同学们,至少可以拿我的作为参考~~
  {##参考自: http://demon.tw/software/windows-apache-ipv6.html}
  1. 安装Visual Studio 2008:这个,不用介绍了吧
  2. 安装Perl和awk:下载ActivePerl-5.12.4.1205并安装;下载awk95.exe,重命名为awk.exe并复制到C:\Windows目录下
  3. 编译zlib库:到官网下载zlib源码,解压至C:\build\zlib,运行Visual Studio 2008命令行,在zlib目录下运行命令
[plain] view plaincopyprint?


  • nmake -f win32\Makefile.msc  

nmake -f win32\Makefile.msc  到这里都还比较轻松,接下来才是崩溃的时刻!
  4. 编译OpenSSL库:到官网下载OpenSSL源码,解压至C:\build\openssl,运行Visual Studio 2008命令行,在openssl目录下运行命令
[plain] view plaincopyprint?


  • perl Configure VC-WIN32  
  • ms\do_ms  
  • nmake -f ms\ntdll.mak  

perl Configure VC-WIN32ms\do_msnmake -f ms\ntdll.mak  {##参考结束}
  上面的这段命令对于没有做过任何修改的OpenSSL-1.0.1 是永远都编译不过去的。
  怎么做呢?
  {##参考自:http://blog.csdn.net/lee353086/article/details/7378835}
  只要把
[plain] view plaincopyprint?


  • perl Configure VC-WIN32  

perl Configure VC-WIN32  修改为
[plain] view plaincopyprint?


  • perl Configure VC-WIN32 no-asm  

perl Configure VC-WIN32 no-asm  就可以编译过去。
  {##参考结束}
  这是为什么?
  为了找到原因,我把no-asm去掉再次编译,报出错误如下图所示:

  在google、baidu上逛了整整半个周日,只搜到了一些英文网站中(需要Fan_Qiang)的确有和我相同的错误信息报出,但是,回答的人都很少,我草草的瞄了一眼就悲剧的把网页给关了...直到这个周一的下午,我还纠结在这个问题上,蛋都碎了!
  于是,继续FQ,再试一次!
  于是乎,我又进了那个网页(问题地址:http://www.mail-archive.com/openssl-dev@openssl.org/msg30681.html),仔细浏览之后,我面无表情的打开了下面唯一一个回复给出的链接,顿时“茅厕”顿开!尼玛这就是宝藏的入口啊!当时那个鸡冻啊!当年哥伦布发现新大陆估计也顶多就那么鸡冻!
  里面的回复中给出的地址是:http://cvs.openssl.org/chngview?cn=22302
  打开链接,一向英语很差的我也硬着头皮看起来,看得出来,大概意思就是介绍x86masm.pl(在目录openssl\crypto\perlasm下)这个文件从1.13版本到1.14版本的一些修改,于是乎,果断把两个版本都down下来,和OpenSSL中自带的x86masm.pl一对比,的确是有些不同!但是到底哪个是的呢?试吧!
  幸亏我用了SVN控制版本,刚才编译修改的东西被我果断还原了~又把一些编译时新增的文件夹和文件全部删掉,用1.14版本的x86masm.pl替代了原有的。
  依次执行:
[plain] view plaincopyprint?


  • perl Configure VC-WIN32  
  • ms\do_ms  
  • nmake -f ms\nt.mak      #编译静态库,生成文件在out32文件夹下  
  • nmake -f ms\ntdll.mak     #编译动态库,生成文件在out32dll文件夹下,这两个可以选择编译一个就行  

perl Configure VC-WIN32ms\do_msnmake -f ms\nt.mak      #编译静态库,生成文件在out32文件夹下nmake -f ms\ntdll.mak     #编译动态库,生成文件在out32dll文件夹下,这两个可以选择编译一个就行  等了大概几分钟时间,顺利编译~哦也!OpenSSL就这么被我稀里糊涂的搞定了~
  好吧,我还没有兴奋过头,抓紧时间继续编译Apache吧~
  5. 编译Apache:到官网下载Apache源码,解压至C:\build\httpd,复制之前编译好的zlib和OpenSSL的文件夹至httpd\srclib目录下,打开httpd\srclib\apr\include\apr.hw,将
[plain] view plaincopyprint?


  • #define APR_HAVE_IPV6 0  

#define APR_HAVE_IPV6 0  改为
[html] view plaincopyprint?


  • #define APR_HAVE_IPV6 1  

#define APR_HAVE_IPV6 1  这是为了支持IPV6.
  运行Visual Studio 2008命令行,在httpd目录下运行命令
[plain] view plaincopyprint?


  • nmake /F Makefile.win INSTDIR="C:\Apache" installr  

nmake /F Makefile.win INSTDIR="C:\Apache" installr  其中,INSTDIR=“C:\Apache”是指定你要把Apache安装到的路径。
  很不幸,编译再次在某个地方中断掉了...这是为什么?为什么别人编的好好的,我却老是出问题呢?我的环境变量也都配的没有问题啊,亲,这到底是怎么了?我不禁仰天长啸一声:你妹啊!
  但是,这么关键的时刻怎么可以掉链子!我调整了一下情绪感到胜利已离我不远了,继续!
  我仔细看了一下报错信息“不知道怎么调用XXXX文件”,这就奇怪了,程序还能不知道怎么调用文件?估计是没有吧!
  打开目录,果然没有...下之!
  于是乎,就这么折折腾腾的编译,停止,编译,停止,总共有两个文件不存在,我就从网上down下了这两个文件:pq_compat.h和store.h,并放到httpd\srclib\openssl\inc32\openssl目录下,终于,编过了~~
  就这样,支持IPv6的Apache就编译好了,进入C:\Apache\bin目录,运行
[plain] view plaincopyprint?


  • httpd.exe -k install  

httpd.exe -k install  就可以把Apache注册为系统服务了~
  但是,事情还没有结束!
  记得打开C:\Apache\conf\httpd.conf配置文件
  找到#ServerName XXXX:XX  (具体的忘了)修改为ServerName 127.0.0.1:80(80端口只要和Listen的端口一样就可以,如果端口被占用,可以换另一个如:8080,但是一定要保持与Listen的端口一样),然后,搞定!
  终于可以安稳的睡觉了~
  BTW:
  最后写的比较仓促,很多异常都忘了截图,所以,以后再补上吧~





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639712-1-1.html 上篇帖子: apache .htaccess 重定向 下篇帖子: linux下svn服务器端+apache安装文档(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表