从0开始完成ActiveMQ-cpp在windows_x86平台的编译(从编译openssl开始)

简介

由于需要将一个项目从linux迁移到windows系统,在互联网没有找到【免费】且【免登录】的x64资源,openssl也已经找不到1.1.1w版本的下载资源了,所以我搭建了虚拟机环境,从编译openssl开始完成activemq的项目编译。

基础环境安装

编译环境介绍

电脑系统:win10 1909
cpu:ryzen 2700x

安装visual studio 2010

下载地址

ed2k://|file|cn_visual_studio_2010_professional_x86_dvd_532145.iso|2591844352|6001253431AFE573E4344F5A0B1D9CAC|/ 

安装

1. 双击打开:cn_visual_studio_2010_professional_x86_dvd_532145.iso 2. 双击steup.exe安装visual studio 2010 

编译openssl1.1.1

安装strawberry-perl

下载地址

https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_54201_64bit/strawberry-perl-5.42.0.1-64bit.msi 

安装nasm

下载地址

https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/nasm-2.15.05-installer-x64.exe 

本地编译openssl_1.1.1

下载openssl_1.1.1w源码

https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz 

解压openssl_1.1.1源码

tar -xzvf openssl-1.1.1w.tar.gz 

编译openssl_1.1.1w源码

1. 在开始菜单找到“Visual Studio x64 Win64 命令提示(2010)”,右键管理员打开 2. cd [openssl解压目录]  例如:cd C:Usersadmin123Desktopopenssl-1.1.1w 3. perl configure VC-WIN64A --prefix="C:Usersadmin123Desktopopenssl-1.1.1wbuild_x64" no-asm   //如果是32位,则将VC-WIN64A改为VC-WIN32 4. nmake clean   //清理上次编译内容 5. nmake //编译openssl 6. nmake tests  //测试编译的openssl是否正常 7. 新建目录 C:Usersadmin123Desktopopenssl-1.1.1wbuild_x64 6. nmake install //安装到"C:Usersadmin123Desktopopenssl-1.1.1wbuild_x64" 

本地编译apr库

下载地址

https://dlcdn.apache.org/apr/apr-1.7.6-win32-src.zip 

解压源码

使用windows解压软件,解压apr-1.7.6-win32-src.zip 

禁用ipv6

修改includeapr.hw文件,将#define APR_HAVE_IPV6改为0 

开始编译

// x64 Release nmake -f Makefile.win ARCH="x64 Release" PREFIX="C:Usersadmin123Desktopactivemqapr-1.7.6build_x64_Release" buildall install clean // *************** // 本人仅完成了x64编译,以下命令遇到的问题自行处理 // *************** // x64 Debug nmake -f Makefile.win ARCH="x64 Debug" PREFIX="C:Usersadmin123Desktopactivemqapr-1.7.6build_x64_Debug" buildall install clean // Win32 Release nmake -f Makefile.win ARCH="Win32 Release" PREFIX="C:Usersadmin123Desktopactivemqapr-1.7.6build_win32_Release" buildall install clean // Win32 Debug nmake -f Makefile.win ARCH="Win32 Debug" PREFIX="C:Usersadmin123Desktopactivemqapr-1.7.6build_win32_Debug" buildall install clean  // 示例:编译并运行测试,仅支持debug模式 nmake -f Makefile.win ARCH="x64 Debug" PREFIX="C:Usersadmin123Desktopactivemqapr-1.7.6build_x64" buildall checkall install clean 

编译apriconv库

下载地址

https://dlcdn.apache.org//apr/apr-iconv-1.2.2-win32-src.zip 

解压源码

使用windows解压软件,解压apr-1.7.6-win32-src.zip 

环境准备

1.使用visual studio 2010打开apriconv.dsw文件 2.在apriconv项目右键“属性” 3.在“配置属性”->“VC++目录”->“包含目录”中设置apr库头文件的路径 4.在“配置属性”->“VC++目录”->“库目录”中设置apr库文件的路径 // 下面这个是编译出dll必须的的,仅编译lib可以忽略 5.在“配置属性”->“链接器”->“输入”->“附加依赖项”中加入“libapr-1.lib” 

编译lib

1.选择Release和x64,开始编译window_x64_release架构的lib库 2.输出目录“x64” 

编译dll

1.在apriconv项目右键”属性“ 2.将“配置属性”->“常规”中的“目标文件扩展名”和“配置类型”改为dll 3.选择Release和x64,开始编译window_x64_release架构的dll库 2.输出目录“x64” 

编译aprutil库

下载地址

https://dlcdn.apache.org//apr/apr-util-1.6.3-win32-src.zip 

解压源码

使用windows解压软件,解压apr-util-1.6.3-win32-src.zip 

环境准备

安装expat组件

说明:此组件aprutil项目有依赖

下载地址

// 32位 https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-win32bin-2.7.3.zip // 64位 https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-win64bin-2.7.3.zip 

解压zip

使用windows解压软件,解压expat-win64bin-2.7.3.zip 

目录结构准备

// 备注:以下这么改是因为Makefile.win中对相关项目路径进行了指定 1.将apr库的源码目录更名为apr 2.将apriconv库的源码目录更名为apr-iconv 3.将aprutil库的源码目录更名为apr-util  // 备注:这个没有强制要求 4.在Source目录新建目录expat,在expat目录中新增子目录include 5.将expat-win64bin-2.7.3.zip中的Sourcelib目录内容复制到include目录中 6.将expat-win64bin-2.7.3.zip中的Bin目录内容复制到expat中  层级结构如下: Source/ ├─apr/ ├─apr-iconv/ ├─apr-util/ └─expat/     └─include/ 

在visual studio 2010中打开项目

使用visual studio 2010打开目录中的aprutil.dsw文件 

配置apr_crypto_openssl项目依赖

1.在“配置属性”->“VC++目录”->“包含目录”中设置openssl库头文件的路径(openssl-1.1.1wbuild_x64include) 2.在“配置属性”->“VC++目录”->“库目录”中设置open库文件的路径(openssl-1.1.1wbuild_x64lib) // 在ssl_1.1.1版本中,ssl的库改名了,需要手动调整 3.在“配置属性”->“链接器”->“输入”->“附加依赖项”中添加“libcrypto.lib”和“libssl.lib” 4.在“配置属性”->“链接器”->“输入”->“附加依赖项”中删除“libeay32.lib”和“ssleay32.lib” 

配置aprutil项目依赖

// 配置apr库路径 1.在“配置属性”->“VC++目录”->“库目录”中设置apr库文件的路径(apr/x64) // 配置apr-iconv库路径 2.在“配置属性”->“VC++目录”->“库目录”中设置apriconv库文件的路径(apr-iconv/x64) // 配置expat库路径 3.在“配置属性”->“VC++目录”->“包含目录”中设置expat库头文件的路径(Source/expat/include) 4.在“配置属性”->“VC++目录”->“库目录”中设置expat库文件的路径(Source/expat) // 编译dll时,增加明确依赖项,lib可以忽略 5.在“配置属性”->“链接器”->“输入”->“附加依赖项”中添加库“libapr-1.lib、libexpat.lib、apriconv-1.lib、wldap32.lib” 

开始编译

在visual studio 2010中,选择x64_Release架构,开始编译 

编译activeMQ库

下载地址

https://dlcdn.apache.org/activemq/activemq-cpp/3.9.5/activemq-cpp-library-3.9.5-src.zip 

解压源码

使用windows解压软件,解压activemq-cpp-library-3.9.5-src.zip 

环境准备

1.使用visual studio 2010打开vs2010-build/activemq-cpp.sln 2.在“配置属性”->“VC++目录”->“包含目录”添加apr、apriconv、aprutil、openssl头文件所在目录 2.在“配置属性”->“VC++目录”->“库目录”添加apr、apriconv、aprutil、openssl库文件所在目录 4.在“配置属性”->“链接器”->“输入”->“附加依赖项”中添加配置“libapr-1.lib;apriconv-1.lib;aprutil-1.lib;ws2_32.lib;” 

开始编译

1.在visual studio 2010中,选择x64_Release开始编译 

结束语

从创建虚拟机到最终完成x64_release版本的activemq-cpp编译,总计耗时3天。
尝试使用默认配置编译apr库,但是没有成功,所以屏蔽了ipv6功能。

发表评论

您必须 [ 登录 ] 才能发表留言!

相关文章