Windows下编译Apache-2.2.22(集成OpenSSL-1.0.1
来源:互联网 发布:配音配乐软件下载 编辑:程序博客网 时间:2024/04/30 03:08
源代码版本: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目录下运行命令
- nmake -f win32\Makefile.msc
到这里都还比较轻松,接下来才是崩溃的时刻!
4. 编译OpenSSL库:到官网下载OpenSSL源码,解压至C:\build\openssl,运行Visual Studio 2008命令行,在openssl目录下运行命令
- perl Configure VC-WIN32
- ms\do_ms
- nmake -f ms\ntdll.mak
{##参考结束}
上面的这段命令对于没有做过任何修改的OpenSSL-1.0.1 是永远都编译不过去的。
怎么做呢?
{##参考自:http://blog.csdn.net/lee353086/article/details/7378835}
只要把
- perl Configure VC-WIN32
修改为
- 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替代了原有的。
依次执行:
- perl Configure VC-WIN32
- ms\do_ms
- nmake -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,将
- #define APR_HAVE_IPV6 0
改为
- #define APR_HAVE_IPV6 1
这是为了支持IPV6.
运行Visual Studio 2008命令行,在httpd目录下运行命令
- 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目录,运行
- httpd.exe -k install
就可以把Apache注册为系统服务了~
但是,事情还没有结束!
记得打开C:\Apache\conf\httpd.conf配置文件
找到#ServerName XXXX:XX (具体的忘了)修改为ServerName 127.0.0.1:80(80端口只要和Listen的端口一样就可以,如果端口被占用,可以换另一个如:8080,但是一定要保持与Listen的端口一样),然后,搞定!
- Windows下编译Apache-2.2.22(集成OpenSSL-1.0.1
- Windows下编译Apache-2.2.22(集成OpenSSL-1.0.1哦亲~)
- windows下编译openssl-1.0.1g
- windows下 openssl编译
- windows下编译openssl
- windows下编译openssl
- Openssl windows下编译
- Windows下编译OpenSSL
- windows下编译openssl
- windows 下编译openssl
- Windows下编译OpenSSL
- windows下编译openssl
- windows下openssl编译
- windows下编译openssl
- Windows下编译OpenSSL
- openssl windows下编译
- Windows下编译OpenSSL
- windows下编译openssl
- javascript的Date对象的使用
- 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
- 性子别急
- Android文件操作小结
- UVAOJ 465 ——Overflow 模拟(坑题)
- Windows下编译Apache-2.2.22(集成OpenSSL-1.0.1
- eclipse内存分析工具MAT使用
- Freemarker详解
- Android读写SD卡 Environment.getExternalStorageState使用
- Mysql INSERT、REPLACE、UPDATE的区别
- UIScrollView 常用的一些方法
- Linux下查看系统信息命令
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 用Live555 中的openRTSP 保存H264