概述
Subversion编译尝试了vs2015、vs2019、vs2022,最终vs2019编译顺利通过,vs2015和vs2022均有编译格式类型错误。安装本文档编译请首选vs2019工具。
Subversion编译主题分两大部分,基于svn服务器的发布方式【svnserver -d -r d:/svn 命令方式发布】和基于apache服务发布,两种方式分别针对svn协议访问和http协议访问。
注:apache和httpd是同一工具的不同叫法,文档下文均以httpd标识。
Apache和subversion编译均需要apr系列库和openssl库支持,本文档优先编译的httpd,再编译subversion,再编译httpd与subversion交互的支撑模块apache serf,最后copy二进制文件,生成可执行程序。
本文档编译完成的subversion和httpd【含serf模块】均为可执行文件,编译过程可能存在不规范之处【例如手动copy文件,手动修改文件名称,修改编译文件等】,主要原因及问题包括两方面,一方便官方给出的编译文档不太严谨,二是libintl和apache serf这两个依赖库官方没有最新的文件。另外本文档并未生成msi文件,本文档针对windows操作系统。
Svn源码路径:https://svn.apache.org/repos/asf/subversion/trunk
全包下载地址:https://download.csdn.net/download/csdnyang338/87577105
编译环境
操作系统:Win10 64位,
编译工具:vs2019
SDK:C:\Program Files (x86)\Windows Kits\10
依赖项
依赖库版本详情请参看官方依赖。
【必选】Python 2.7.7
【必选】libxml2-python-2.7.7.win32-py2.7
【可选】scons-3.0.0-setup[用于编译serf做http访问支撑]
【必选】strawberry-perl-5.32.1.1-32bit
【必选】sqlite-autoconf-3410000
【必选】Awk.exe
【必选】NASM.exe
【可选】GNU libintl [用于编译serf做http访问支撑]
【必选】openssl-1.1.1l.tar.gz
【必选】apr-1.7.0.tar.gz
【必选】apr-util-1.6.1.tar.gz
【必选】zlib-1.2.11.tar.gz
【必选】libexpat-R_2_4_1.tar.gz
【可选】pcre-8.45.tar.gz [用于编译httpd]
【可选】brotli-1.0.9.tar.gz [用于编译httpd]
【可选】httpd-2.4.51.tar.gz [用于http访问]
【可选】serf-1.3.9 [用于http访问]
【可选】apr-iconv [用于http访问]
编译过程
准备工作
安装vs2019
安装python,并添加path环境变量
安装libxml2-python-2.7.7.win32-py2.7
安装scons-3.0.0-setup,并添加path环境变量
安装strawberry-perl-5.32.1.1-32bit .msi
下载源码https://svn.apache.org/repos/asf/subversion/trunk 优选从官方svn地址下载源码,官方的zib源码好像缺少点东西。检出源码命名为src-trunk。
下载awk.exe,在src-trunk同级目录下创建awk文件夹,并将awk.exe放入。
下载NASM,在src-trunk同级目录下创建NASM文件夹,并将NASM二进制文件放入。
将依赖库apr-1.7.0.tar.gz、apr-util-1.6.1.tar.gz、apr-iconv、openssl-1.1.1l.tar.gz、zlib-1.2.11.tar.gz、libexpat-R_2_4_1.tar.gz、pcre-8.45.tar.gz、brotli-1.0.9.tar.gz、httpd-2.4.51.tar.gz
、sqlite-autoconf-3410000、serf-1.3.9 、GNU libintl解压到src-trunk同级目录,并去掉版本号。
下载libintl,在src-trunk同级目录下创建libintl文件夹,并将libintl二进制文件放入。
下载apr-iconv,在src-trunk同级目录下创建apr-iconv文件夹,并将编译完成的apr-iconv文件放入。