4

在问题 #197444的帮助下,我设法在 Visual Studio 2010 IDE、OpenSSL 1.0.0 和 zlib 1.2.5 中从 Windows 上的源代码构建 cURL 和 libcurl。我看到的问题是,目前,如果我使用参数运行生成的 curl.exe -V,那么它报告的版本是

curl 7.20.1 (i386-pc-win32) libcurl/7.20.1 OpenSSL/0.9.8d zlib/1.2.3
Protocols: dict file ftp ftps http https imap imaps ldap pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS Largefile NTLM SSL libz

请注意,如果我实际使用的版本与 OpenSSL 和 zlib 报告的版本不匹配。关于如何解决这个问题的任何想法?

ps 是否有可以编译到 libcurl 中的可选组件的明确列表以及使用哪些选项/预处理器指令?(例如 SSPI、libidn、...?)

4

2 回答 2

2

我快速浏览了 curl 源代码,它从 DLL 中动态获取这些版本号,而不是从任何静态源中获取。所以这些是实际加载到 curl 过程中的库版本,而不是用于构建 curl 源的库版本。您的系统上可能有那些由 curl 进程加载的旧版本的库。

于 2010-05-30T18:51:14.543 回答
1

我使用这个批处理文件从命令行构建 cURL 和 libcurl

@echo off

rem assumes OpenSSL at ../../openssl-1.0.0a
rem assumes zlib at ./../zlib-1.2.5 and built with static runtime libraries (/MT)

echo "Add '#define HAVE_LDAP_SSL 1' to lib\config-win32.h"
notepad lib\config-win32.h
pause

cd lib
nmake -f Makefile.vc9 clean
nmake -f Makefile.vc9 OPENSSL_PATH=../../openssl-1.0.0a ZLIB_PATH=../../zlib-1.2.5    RTLIBCFG=static CFG=release-ssl-zlib

cd ..
cd src
nmake -f Makefile.vc9 clean
nmake -f Makefile.vc9 OPENSSL_PATH=../../openssl-1.0.0a ZLIB_PATH=../../zlib-1.2.5 RTLIBCFG=static CFG=release-ssl-zlib

这就是我得到的版本

curl 7.21.0 (i386-pc-win32) libcurl/7.21.0 OpenSSL/1.0.0a zlib/1.2.5
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS Largefile NTLM SSL libz
于 2010-07-01T21:08:16.680 回答