• 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

  • 相关阅读:
    oracle修改字符编码
    oracle修改约束列
    oracle非空约束
    Linux修改字符集
    修改oracle字符集合
    word问题禁止宏
    增加修改表列
    oracle增加sequence
    增加 修改oracle约束条件
    oracle用户 密码永不过期
  • 原文地址:https://www.cnblogs.com/ultracpp/p/5704081.html
Copyright © 2020-2023  润新知