zoukankan      html  css  js  c++  java
  • vc2015 编译libcurl带openssl

    1.先编译zlib下载地址 http://zlib.net/

    我这边vc2015编译需要配置环境变量,不知道是装了wdk的原因还是多个vc版本的原因

    设置环境变量lib和include路径

    INCLUDE=C:Program Files (x86)Windows Kits10Include10.0.10586.0um;C:Program Files (x86)Windows Kits10Include10.0.10586.0shared;C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrt;C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrtsys
    LIB=C:Program Files (x86)Windows Kits10Lib10.0.10586.0umx64;C:Program Files (x86)Windows Kits10Lib10.0.10586.0ucrtx64

    然后用vc2015的控制台命令,进入到代码路径

    nmake -f win32Makefile.msc clean
    nmake -f win32Makefile.msc

    编译完成后,修改lib路径为x86路径,注销系统,重新执行vc2015的控制台(x86)版本,即可生成对应的dll和lib

    如果需要编译mt版本的,修改Makefile.msc中的CFLAGS  = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) 中的MD为MT

    这编译出来的是realse版本的,如果debug版本项目使用realse版本zlib的时候,需要将多线程调试 DLL (/MDd)" 改为 "多线程 DLL (/MD)


    2.编译openssl http://www.cnblogs.com/ultracpp/p/3463110.html


    3.编译libcurl
    下载地址  https://curl.haxx.se/download.html
    编译主要参考自带的文档 winbuildBUILD.WINDOWS.txt
    同样修改 lib路径(同上)

    同样使用vc命令行,cd到curl-*winbuild路径下配置deps目录

    切换x86的时候直接用x86的lib替换掉就可以了

    执行命令如:
    nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.0deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
    nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.0deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86

    nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.3deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64

    nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.3deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86

    Enable use of Windows IDN APIs, defaults to yes Requires Windows Vista or later

    如果编译失败,提示连接错误之类的,可以尝试直接清空builds目录下面的所有文件,再来一次

    如果出现在xp下面运行无法定位程序输入点GetTickCount64的话,需要自己手动修改MakefileBuild.vc文件,找到
    !IF "$(VC)"=="6"
    CC_NODEBUG = $(CC) /O2 /DNDEBUG
    CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
    CFLAGS = /I. /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
    !ELSE
    CC_NODEBUG = $(CC) /O2 /DNDEBUG
    CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd /W3
    CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
    !ENDIF
     
    修改后面的
    CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_USING_V110_SDK71_
     
    找到(后面也增加/D_USING_V110_SDK71_)
    CURL_CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_USING_V110_SDK71_
    CURL_LFLAGS = /nologo /out:$(DIRDIST)in$(PROGRAM_NAME) /subsystem:console,"5.01" /machine:$(MACHINE)

    原因看config-win32.h里面的

    #  if defined(_USING_V110_SDK71_)
    #    define VS2012_DEF_TARGET 0x0501
    #  else
    #    define VS2012_DEF_TARGET 0x0600
    #  endif

    编译完成后会得到buildslibcurl-vc14-x86-release-dll-ssl-dll-zlib-dll-ipv6-sspi目录,里面的东西就是我们想要的了

    不过,得到的libcurl好像并没有导入zlib,尽管上面的命令是动态导入的dll

  • 相关阅读:
    linux 命令——19 find (转)
    linux 命令——18 locate (转)
    linux 命令——17 whereis(转)
    linux 命令——16 which(转)
    linux 命令——15 tail (转)
    linux 命令——14 head (转)
    Java for LeetCode 038 Count and Say
    Java for LeetCode 037 Sudoku Solver
    Java for LeetCode 036 Valid Sudoku
    Java for LeetCode 035 Search Insert Position
  • 原文地址:https://www.cnblogs.com/ultracpp/p/5704081.html
Copyright © 2011-2022 走看看