博客 / 詳情

返回

從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:\Users\admin123\Desktop\openssl-1.1.1w
3. perl configure VC-WIN64A --prefix="C:\Users\admin123\Desktop\openssl-1.1.1w\build_x64" no-asm   //如果是32位,則將VC-WIN64A改為VC-WIN32
4. nmake clean   //清理上次編譯內容
5. nmake //編譯openssl
6. nmake tests  //測試編譯的openssl是否正常
7. 新建目錄 C:\Users\admin123\Desktop\openssl-1.1.1w\build_x64
6. nmake install //安裝到"C:\Users\admin123\Desktop\openssl-1.1.1w\build_x64"

本地編譯apr庫

下載地址

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

解壓源碼

使用windows解壓軟件,解壓apr-1.7.6-win32-src.zip

禁用ipv6

修改include\apr.hw文件,將#define APR_HAVE_IPV6改為0

開始編譯

// x64 Release
nmake -f Makefile.win ARCH="x64 Release" PREFIX="C:\Users\admin123\Desktop\activemq\apr-1.7.6\build_x64_Release" buildall install clean
// ***************
// 本人僅完成了x64編譯,以下命令遇到的問題自行處理
// ***************
// x64 Debug
nmake -f Makefile.win ARCH="x64 Debug" PREFIX="C:\Users\admin123\Desktop\activemq\apr-1.7.6\build_x64_Debug" buildall install clean
// Win32 Release
nmake -f Makefile.win ARCH="Win32 Release" PREFIX="C:\Users\admin123\Desktop\activemq\apr-1.7.6\build_win32_Release" buildall install clean
// Win32 Debug
nmake -f Makefile.win ARCH="Win32 Debug" PREFIX="C:\Users\admin123\Desktop\activemq\apr-1.7.6\build_win32_Debug" buildall install clean

// 示例:編譯並運行測試,僅支持debug模式
nmake -f Makefile.win ARCH="x64 Debug" PREFIX="C:\Users\admin123\Desktop\activemq\apr-1.7.6\build_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中的Source\lib目錄內容複製到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.1w\build_x64\include)
2.在“配置屬性”->“VC++目錄”->“庫目錄”中設置open庫文件的路徑(openssl-1.1.1w\build_x64\lib)
// 在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功能。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.