Windows7+VS2008 下编译Subversion 1.8.3
一、需要的软件包
1.python-2.7.5.msi http://www.python.org/
2.ActivePerl-5.8.8.822-MSWin32-x86-280952.msi http://www.python.org/
3.awk95.exe http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe
4.gettext-0.14.1-bin.zip http://sourceforge.net/projects/gnuwin32/files/gettext/0.14.1/
5.httpd-2.2.25-win32-src.zip http://mirrors.hust.edu.cn/apache//httpd/httpd-2.0.65-win32-src.zip
6.openssl-1.0.1e.tar.gz http://www.openssl.org/source/
7.zlib128.zip http://sourceforge.net/projects/libpng/files/zlib/1.2.8/
8.libintl 0.14.1(patched) http://subversion.tigris.org/files/documents/15/20739/svn-win32-libintl.zip
9.db-4.8.30.zip(Berkeley DB 4.8.30) http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html
10.serf-1.2.1.zip https://code.google.com/p/serf/downloads/detail?name=serf-1.2.1.zip&can=1&q=
11.sqlite 3.7.17.0 http://sqlite.org/2013/sqlite-amalgamation-3071700.zip
12.jdk1.6.0_30
13.junit-4.11.jar https://github.com/junit-team/junit/downloads
14.cyrus-sasl-2.1.26.tar.gz http://cyrusimap.org/releases/
二、安装
1、安装Python和Perl,加入PATH环境变量
2、新建F:\SVN目录,解压gettext-0.14.1-bin.zip到该目录,加入PATH环境变量
3、复制awk95.exe到F:\SVN\gettext-0.14.1-bin\bin目录
三、编译
1、编译httpd-2.2.25、openssl-1.0.1e及zlib1.2.8
解压httpd-2.2.25-win32-src.zip到 F:\SVN目录
httpd依赖openssl和zlib,所以要先编译这两库。复制openssl-1.0.1e.tar.gz和zlib128.zip到F:\SVN\httpd-2.2.25\srclib目录,解压生成F:\SVN\httpd-2.2.25\srclib\openssl和F:\SVN\httpd-2.2.25\srclib\zlib目录
1.1、编译openssl
打开vs2008命令提示符窗口,进入F:\SVN\httpd-2.2.25\srclib\openssl目录,参考F:\SVN\httpd-2.2.25\srclib\openssl\INSTALL.W32文件进行安装
(1)、执行perl Configure VC-WIN32进行配置
(2)、执行 ms\do_ms生成makefile
(3)、执行nmake -f ms\ntdll.mak进行编译,编译完成后执行nmake -f ms\ntdll.mak test进行测试
(4)、以上步骤编译出来的是Release版本,现要编译Debug版本,做如下修改:
复制ms\do_ms.bat为ms\do_ms_dbg.bat,修改内容如下(红色的debug为新增):
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl debug no-asm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl debug dll no-asm VC-WIN32 >ms\ntdll.mak
if x%OSVERSION% == x goto skipce
perl util\mk1mf.pl debug no-asm VC-CE >ms\ce.mak
perl util\mk1mf.pl debug dll no-asm VC-CE >ms\cedll.mak
执行 ms\do_ms_dbg重新生成makefile,按步骤(3)重新编译
1.2 编译zlib
打开vs2008命令提示符窗口,进入F:\SVN\httpd-2.2.25\srclib\zlib\contrib\masmx86目录,执行bld_ml32.bat,将生成inffas32.obj和match686.obj,把这两个文件复 制到F:\SVN\httpd-2.2.25\srclib\zlib\目录下,执行nmake -f win32/Makefile.msc 进行编译
1.3 编译httpd-2.2.25
进入F:\SVN\httpd-2.2.25\,用VS2008打开Apache.dsw,把它转换成VS2008的工程,打开后编译BuildAll这个工程,它将编译所有的工程
注:编译过程中报很多如下的错:
fatal error RC1107: invalid usage; use RC /? for Help
这是由于vcproj文件中合有;(quot;)导致的,只要全部替换就可以了

用正则表达式把所有的"号去除。执行LONG_NAME="{.*}"替换为LONG_NAME=\1和BIN_NAME="{.*}"替换为BIN_NAME=\1
及DLL_NAME="{.*}"替换为DLL_NAME=\1,共三次替换。注意,第一次替换httpd工程还有"要手动改下
修改完成后就可以正常的编译了
2、编译db-4.8.30、cyrus-sasl-2.1.26、subversion-1.8.3
2.1、编译db-4.8.30
解压db-4.8.30.zip到F:\SVN目录,打开F:\SVN\db-4.8.30\build_windows\Berkeley_DB.sln,编译整个解决方案即可。可以编译Debug版和Release版
2.2、编译cyrus-sasl-2.1.26
解压cyrus-sasl-2.1.26.zip到F:\SVN目录,在VS2008命令提示符下进入F:\SVN\cyrus-sasl-2.1.26,执行如下命令:
nmake /f NTMakefile CFG=Debug DB_INCLUDE=F:/SVN/db-4.8.30/build_windows DB_LIBPATH=F:/SVN/db-4.8.30/build_windows/Win32/Debug OPENSSL_INCLUDE=F:/SVN/httpd-2.2.25/srclib/openssl/inc32 OPENSSL_LIBPATH=F:/SVN/httpd-2.2.25/srclib/openssl/out32dll.dbg DB_LIB=libdb48d.lib
nmake /f NTMakefile CFG=Release DB_INCLUDE=F:/SVN/db-4.8.30/build_windows DB_LIBPATH=F:/SVN/db-4.8.30/build_windows/Win32/Release OPENSSL_INCLUDE=F:/SVN/httpd-2.2.25/srclib/openssl/inc32 OPENSSL_LIBPATH=F:/SVN/httpd-2.2.25/srclib/openssl/out32dll DB_LIB=libdb48.lib
编译整个工程。其实subversion只用到了lib,也可以在F:\SVN\cyrus-sasl-2.1.26\lib目录下执行nmake /f NTMakefile
2.3、编译subversion-1.8.3
(1)、解压subversion-1.8.3到F:\SVN目录下,并重命名为src-trunk
(2)、复制serf-1.2.1.zip、sqlite-amalgamation-3071700.zip、svn-win32-libintl.zip到F:\SVN\src-trunk下,解压后重命名,去除版本号
(3)、在VS2008命令提示符下进入F:\SVN\src-trunk,执行如下命令生成vs工程:
python gen-make.py -t vcproj --vsnet-version=2008 --with-berkeley-db=db.h:../db-4.8.30/build_windows:../db-4.8.30/build_windows/Win32/lib --with-serf=serf --with-httpd=../httpd-2.2.25 --with-libintl=svn-win32-libintl --with-openssl=../httpd-2.2.25/srclib/openssl --with-zlib=../httpd-2.2.25/srclib/zlib --with-jdk="C:\Program Files\Java\jdk1.6.0_30" --with-junit=../junit-4.11.jar --with-sqlite=sqlite
注:红色部分的Win32/lib目录下的lib文件是分别从Win32\Debug和Win32\Release目录下复制过来,包含如下文件
F:\SVN\DB-4.8.30\BUILD_WINDOWS\WIN32\LIB
libdb48.dll
libdb48.lib
libdb48d.dll
libdb48d.lib
(4)、打开F:\SVN\src-trunk\subversion_vcnet.sln,编译__ALL_TESTS__工程
Windows7+VS2008 下编译Subversion 1.8.3的更多相关文章
- libevent学习之二:Windows7(Win7)下编译libevent
Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译. 一.准备工作 去官网下载最新的稳定发布版本libevent-2.0.22-stable 官网地址:http:// ...
- VS2008下编译BOOST 1.39的ASIO库
由于全部编译BOOST库需要的时间太长,而且耗费空间,况且我只需要用ASIO库,所以就没有必要全部编译了. boost库到www.boost.org上下载. 编译很简单,假设你的boost存放的目录是 ...
- vs2008 下编译jrtplib-3.9.0成功
jrtplib-3.9.0的编译,终于搞通了.网上搜集了很多资料,自己也调试了很久. 首先,jrtplib-3.9.0是什么不用多说吧,它是一个很牛的老外用C++写的一个开源的RTP协议库,用它可以进 ...
- VS2008下编译boost_1_47_0
1,boost下载 如果不想自己编译,可下载http://boostpro.com/download/boost_1_47_setup.exe,安装后,程序会提供选项供下载已经编译好的库文件,基于 ...
- Windows7 VS2015 下编译 PythonQt3.2
本文在使用vs2015编译python3.6.7源代码后,编译的PythonQt3.2.如果使用python二进制文件进行安装,注意python的路径即可 本机环境: 1.win7 64 旗舰版 2. ...
- openPOWERLINK代码在vs2008下编译
以openPOWERLINK_V1.08为例: 1.在主目录下新建Build目录 2.使用cmake-gui对代码进行配置 3.配置完成后生成工程文件xxx.sln 4.使用vs2008打开上述文件, ...
- Windows7 VS2015 下编译 Python3.6.6
本机环境: 1.win7 64 旗舰版 2.Qt 5.11.2(MSVC 2015,32 bit) 3.到目前为止,python官方2018-10-20更新,Python 3.6.7: 1.下载合适的 ...
- caffe 在window下编译(windows7, cuda8.0,matlab接口编译)
1. 环境:Windows7,Cuda8.0,显卡GTX1080,Matlab2016a,VS2013 (ps:老板说服务器要装windows系统,没办法,又要折腾一番,在VS下编译好像在cuda8. ...
- 在Windows7下编译调试C#程序
要在 命令行下编译C#代码,要配置一下 1.在环境变量下新建一个变量 参数名: csc 参数值:C:\Windows\Microsoft.NET\Framework\v4.0.30319 2.在系统变 ...
随机推荐
- windows下redis的安装和启动
Rides: //cmd管理员进入 // 运行 : redis-cli.exe //报错 :Redis (error) NOAUTH Authentication required.解决方法 // ...
- tfboys——tensorflow模块学习(三)
tf.estimator模块 定义在:tensorflow/python/estimator/estimator_lib.py 估算器(Estimator): 用于处理模型的高级工具. 主要模块 ex ...
- Python进阶(5)_进程与线程之协程、I/O模型
三.协程 3.1协程概念 协程:又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存 ...
- Python学习进程(10)字典
本节介绍Python中的字典:是另一种可变容器模型,且可存储任意类型对象. (1)字典简介: 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割 ...
- 写python中的装饰器
python中的装饰器主要用于在已有函数实现功能前附加需要输出的信息,下面将用实例展示我如何写装饰器. 首先分别尝试写装饰器装饰一个无参函数和一个有参函数(被装饰函数仅输出,无返回值情况下) def ...
- 在看 jquery 源码中发现的一些优化方向
1. 避免使用 $.fn.each 或 $.each 因为它比原生的 for/while 真的会慢一些,循环次数越多差距越大. 另外,对象的 for-in 比 for 是要快一丢丢的,但数组的 for ...
- 1000M链路的理论值计算
1000M约等于(1秒/(1纳秒))/ (1024*1024) ============================================================== 1.什么是 ...
- 每日练习level-7
1.有序列表.无序列表.自定义列表如何使用?写个简单的例子.三者在语义上有什么区别?使用场景是什么? 能否嵌套? 有序列表是一列使用数字进行标记的项目,它使用<li>包含于<ol&g ...
- Nginx 常见报错
Nginx 常见报错 启动报错:[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 原因:这个是nginx重启时经常遇到 ...
- 主攻ASP.NET.4.5.1 MVC5.0之重生:Web项目语音朗读网页文本,简单语音提示浏览状态
第一步 添加SpeechLib.dll 下载SpeechLib.dll: 在项目中并且引用DLL using SpeechLib; using System.Threading; 第二步 调用并使用 ...