编译win32的版本如下:
1.安装nasm,Index of /pub/nasm/releasebuilds 有人说不用,我懒得想那么多,直接下载最新版本安装了。
这里解压到C:\nasm,然后在Path里面添加记录。
2.安装perl,Download & Install Perl - ActiveState ;要登陆下载,可以注册也可以用GitHub授权
我下载一份64bit的安装,目录默认是C:\Perl64\bin,然后在Path里面添加记录。
3.源码:/source/index.html 我跑到release/old里面下载了一份102u的版本,抄书而已
有人需要将vs定位到环境中,但是我的vs2015是默认安装路径,貌似啥都不用管。在后面nmake找不到的话,在考虑将VC路径加上去
(1)打开“VS2015 开发人员命令提示”,别搞cmd.exe了,那个在后面还要换。
(2)CD到opensll的代码目录上。
(3)“perl Configure VC-WIN32 no-asm --prefix={安装目录}”
(4)“ms\do_nasm”
(5)“nmake -f ms\ntdll.mak”
这时候在代码目录上多了tmp32dll和out32dll两个目录(正常的情况),如果需要重新编译,删掉这两个目录就可以了。
默认编译出来的是DLL关联运行时的,要是发布出去,用户投诉一堆吧。所以,要修改ntdll.mak里面的/MD为/MT然后编译就可以了。
(6) 测试一下 “nmake -f ms\ntdll.mak test”
(7)安装,“nmake -f ms\ntdll.mak install”,这样不必考虑需要哪些dll,lib和include。
编译64位也是上述的步骤,只有(3)需要改一下 。有人建议需要整个代码复制一份到另外一个目录,但是我没这样搞,很烦人。最好复制一下,这样配置好之后,再次编译可以直接省掉1-4的步骤,还不用每次在4之后修改ntdll.mak。
下面记录的是win64编译静态库的(上面是动态库,64位的编译差不多,这里静态库32也差不多,反正对照着看就行)
(1)(2)同上
(3)“perl Configure VC-WIN64I no-asm --prefix={安装目录}”
(4)“ms\do_win64i”
(5)“nmake -f ms\nt.mak MACHINE=x64”
(6)“nmake -f ms\nt.mak test”
(7)“nmake -f ms\nt.mak install”
其中少了修改mak文件的步骤。
最后试验了一下,结果win64a不符合我的要求,通不过64位程序的编译,会提示库为x86不符合目标计算机x64的。最后换成win64i就可以了。(那个vs命令换成“VS2015 x64 本机工具命令提示符”,不知道这个有没有影响,没有继续试验了)