文章目录
- 一、准备安装包
- 二、编译与安装
- 编译zlib
- 编译openssl
- 编译libevent
- 三、libevent集成zlib测试程序修改编译(可选)
- 四、测试程序
- 五、linux(ubuntu)测试
- 安装依赖环境,依次编译zlib,openssl,libevent
- windows与linux共享文件夹(使用root操作)
- linux测试
一、准备安装包
前置环境,安装好了VS2017及以上版本
libevent 【下载地址】:https://libevent.org/zlib 【下载地址】:https://www.zlib.net/openssl 【下载地址】:https://www.openssl.org/source/old/1.1.1/
perl 【下载地址】:https://www.perl.org/get.htmlnasm 【下载地址】:https://nasm.us/
直接下载链接:https://pan.baidu.com/s/1lrSPMjmugcYWbkIjlqPC2g 提取码:5exw
准备好目录如下
PS D:\libevent_project> ls
目录: D:\libevent_project
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/10/18 9:11 22375320 ActivePerl-5.24.3.2404-MSWin32-x64-404865.exe
-a---- 2021/10/18 9:07 1026485 libevent-2.1.8-stable.tar.gz
-a---- 2021/10/18 9:11 588621 nasm-2.13.03-win64.zip
-a---- 2021/10/15 17:45 9834044 openssl-1.1.1.tar.gz
-a---- 2021/10/15 17:40 607698
二、编译与安装
解压zlib-1.2.11.tar.gz
解压libevent-2.1.8-stable.tar.gz
解压openssl-1.1.1l.tar.gz
编译zlib
在D:\libevent_project
目录下,编写批量编译脚本build_zlib_vs2019_32.bat
并执行。
@echo "==========start build zlib============"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set OUT="D:\libevent_project\build_project_vs2017_32\zlib"
call %VS%
cd zlib-1.2.11
nmake /f win32\Makefile.msc clean
nmake /f win32\Makefile.msc
md %OUT%\lib
md %OUT%\bin
md %OUT%\include
copy /Y *.lib %OUT%\lib
copy /Y *.h %OUT%\include
copy /Y *.dll %OUT%\bin
copy /Y *.exe %OUT%\bin
@echo "==========end build zlib============"
编译完成查看D:\libevent_project\build_project_vs2017_32\zlib
目录下的lib,include,bin三个目录下的文件是否存在。
编译openssl
双击安装ActivePerl.exe文件,一路下一步安装完成。
解压nasm-2.13.03-win64.zip文件,配置exe文件所在目录的环境变量即可。
perl 使用方法:
- perl Configure {VC-WIN32 | VC-WIN64A | VC-WIN64 | VC-CE} --prefix=%OUTPATH%
perl Configure VC-WIN32 编译32位程序
perl Configure VC-WIN64A 编译64位程序
使用perl生成makefile文件
进入cd D:\libevent_project\openssl-1.1.1
目录下生成Makefile文件,执行如下指令:
perl Configure VC-WIN32 --prefix=D:\libevent_project\build_project_vs2017_32\openssl
执行nmake 进行编译,以管理员身份执行nmake install进行安装。
或者使用如下批处理安装脚本。
在D:\libevent_project
目录下,编写批量编译脚本build_openssl_vs2019_32.bat
以管理员身份执行。
@echo "==========start build openssl============"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set OUT="D:\libevent_project\build_project_vs2017_32\openssl"
call %VS%
D:
cd D:\libevent_project\openssl-1.1.1
perl Configure VC-WIN32 --prefix=%OUT%
nmake clean
nmake
nmake install
@echo "==========end build openssl============"
编译libevent
进入D:\libevent_project\libevent-2.1.8-stable
目录下,以管理员身份执行如下指令:
nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent_project\build_project_vs2017_32\openssl
进入D:\libevent_project\libevent-2.1.8-stable\test
目录下
修改Make.nmake
文件内容第六行后,如下:
SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libssl.lib $(OPENSSL_DIR)\lib\libcrypto.lib gdi32.lib User32.lib
运行libevent\test\regress.exe测试编译结果
如果都显式OK,没有报错,则说明编译成功;否则,编译失败。
如果提示缺少libcrypto-1_1.dll,libssl-1_1.dll这2个文件,就从openssl\bin目录下拷贝到regress.exe所在路径。
查看regress.log是否都ok,若无错误则编译成功。
三、libevent集成zlib测试程序修改编译(可选)
test工作路径=D:\libevent_project\libevent-2.1.8-stable\test\
- 添加编译目标
编辑 test工作路径 下的Makefile.nmake
23行末尾添加regress_zlib.obj
(注意加空格) - 复制之前编译好的zlib整个文件夹(即bin,lib.include三个文件夹)到
D:\libevent_project\libevent-2.1.8-stable
- 添加编译目标(包含目录)
编辑 test工作路径Makefile.nmake
13行CFLAGS=
后面加/I../zlib/include
- 添加编译目标(添加库目录)
编辑 test工作路径 下的Makefile.nmake
39行末尾添加..\zlib\lib\zdll.lib
(注意加空格) - 复制文件
D:\libevent_project\build_project_vs2017_32\zlib\bin\zlib1.dll
到 test工作路径 - 编辑
D:\libevent_project\libevent-2.1.8-stable\WIN32-Code\nmake\event2\event-config.h
86行下添加#define EVENT__HAVE_LIBZ
清理之前的编译并再次编译
nmake /f Makefile.nmake clean
nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent_project\build_project_vs2017_32\openssl
测试:查看regress.log文件
编译libevent批处理程序
@echo "==========start build libevent============"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set OUT="D:\libevent_project\build_project_vs2017_32\libevent"
call %VS%
cd D:\libevent_project\libevent-2.1.8-stable
nmake /f Makefile.nmake clean
nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent_project\build_project_vs2017_32\openssl
md %OUT%\lib
md %OUT%\bin
md %OUT%\include
copy /Y *.lib %OUT%\lib
xcopy /S/Y include %OUT%\include\
xcopy /S/Y WIN32-Code\nmake %OUT%\include\
copy /Y *.dll %OUT%\bin
copy /Y *.exe %OUT%\bin
@echo "==========end build libevent============"
四、测试程序
新建项目,右击【配置】配置如下:
【C/C++】->【常规】->【预编译头】不使用预编译头
【C/C++】->【常规】->【附加包含路径】添加D:\libevent_project\build_project_vs2017_32\libevent\include
【链接器】->【常规】->【附加库目录】添加D:\libevent_project\build_project_vs2017_32\libevent\lib
【链接器】->【输入】->【附加依赖性】添加:
libevent.lib
libevent_core.lib
libevent_extras.lib
libevent_openssl.lib
ws2_32.lib
zlib.lib
测试程序如下:
#include <iostream>
#include <event2/event.h>
int main(int argc, char** argv) {
#if _WIN32
//windowns 初始化socket库
WSADATA wsa;
WSAStartup(MAKEWORD(2, 2), &wsa);
#endif
event_base* base = event_base_new();
if (base) {
std::cout << "first libevent" << std::endl;
}
return 0;
}
五、linux(ubuntu)测试
安装依赖环境,依次编译zlib,openssl,libevent
sudo apt-get install perl g++ make automake libtool unzip vim zip
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config
make
make install
tar -zxvf libevent-2.1.8-stable.tar.gz
./autogen.sh
./configure
make
make install
test/regress > ../regress.log #测试安装(查看zlib,openssl是否成功)
报错:./testlibevent: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
执行:ln -s /usr/local/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
windows与linux共享文件夹(使用root操作)
- Ubuntu安装VMware Tools
- 虚拟机中ubuntu使用共享文件夹(选择win10目录)
- 默认挂载路径:
/mnt/hgfs
- 挂载新路径方便使用:
cd ~
mkdir libevent_src
mkdir -p /mnt/hgfs/libevent_learning # 这个名字随便取(被挂载后覆盖了)
sudo mount
- 【拓展阅读】关于服务器之间路径映射
linux测试
写Makefile,执行make clean && make
firstlibevent:main.cpp
g++ $^ -o $@ -levent
./$@
clean:
rm -rf firstlibevent
rm
参考
问题解决:zlib编译x64