簡介
由於需要將一個項目從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功能。