使用静态链接构建 libcurl 到 openssl
Building libcurl with static linking to openssl
我正在尝试使用静态 linking 构建 libcurl 到 openssl。所以为了实现这一点,我使用了以下配置:
OpenSSL:
LDFLAGS="-static”
LIBS="-ldl”
卷曲:
LDFLAGS="-static”
CPPFLAGS="-I$(CURDIR)/$(3RDPARTY_DIR)$(OPENSSL)/include
LDFLAGS="-L$(CURDIR)/$(3RDPARTY_DIR)$(OPENSSL)"
./configure --disable-shared --without-zlib --without-libidn --without-librtmp --disable-ldap —-with-ssl=<path where my openssl is installed>
有了这个,我将生成 libcurl.a 和 link 它到我的代码中,我可以根据需要成功处理 HTTPS 连接。
但出于学习目的,我想知道 SSL 符号是否实际集成到 libcurl 中。
因此,为此,我尝试使用 nm
命令:
nm -A libcurl.a | grep “SSL_"
但是它将所有 SSL 符号显示为未定义。例如,
U SSL_connect
U SSL_ctrl
这是否意味着来自 libssl.a 和 libcrypto.a 的符号实际上并未集成到 libcurl 中?
如果是,如何才能真正将它们整合到 libcurl.a?
感谢任何帮助,帮助我理解这一点。
是的,这意味着 OpenSSL 符号未集成到 libcurl 中。
构建静态版本的 libcurl 时,您会得到一个适合静态 linking 的 libcurl.a
文件。但是你还需要 还 在 linker 命令行上提供所有(静态)依赖库,你通常不会 link 它们一起首先进入一个静态库。 (如果你想完成,你必须自己做;curl 构建系统不会做。)
当您想 link 您的应用程序使用静态 libcurl 构建以使用静态 OpenSSL 时,您 link 您的应用程序并在 linker 命令上提供所有必要的库线。在 *nix 上表示 -lcurl -lcrypto -lssl
...
(大多数 libcurl 构建也将使用额外的依赖项)。
我正在尝试使用静态 linking 构建 libcurl 到 openssl。所以为了实现这一点,我使用了以下配置:
OpenSSL:
LDFLAGS="-static”
LIBS="-ldl”
卷曲:
LDFLAGS="-static”
CPPFLAGS="-I$(CURDIR)/$(3RDPARTY_DIR)$(OPENSSL)/include
LDFLAGS="-L$(CURDIR)/$(3RDPARTY_DIR)$(OPENSSL)"
./configure --disable-shared --without-zlib --without-libidn --without-librtmp --disable-ldap —-with-ssl=<path where my openssl is installed>
有了这个,我将生成 libcurl.a 和 link 它到我的代码中,我可以根据需要成功处理 HTTPS 连接。
但出于学习目的,我想知道 SSL 符号是否实际集成到 libcurl 中。
因此,为此,我尝试使用 nm
命令:
nm -A libcurl.a | grep “SSL_"
但是它将所有 SSL 符号显示为未定义。例如,
U SSL_connect
U SSL_ctrl
这是否意味着来自 libssl.a 和 libcrypto.a 的符号实际上并未集成到 libcurl 中?
如果是,如何才能真正将它们整合到 libcurl.a?
感谢任何帮助,帮助我理解这一点。
是的,这意味着 OpenSSL 符号未集成到 libcurl 中。
构建静态版本的 libcurl 时,您会得到一个适合静态 linking 的 libcurl.a
文件。但是你还需要 还 在 linker 命令行上提供所有(静态)依赖库,你通常不会 link 它们一起首先进入一个静态库。 (如果你想完成,你必须自己做;curl 构建系统不会做。)
当您想 link 您的应用程序使用静态 libcurl 构建以使用静态 OpenSSL 时,您 link 您的应用程序并在 linker 命令上提供所有必要的库线。在 *nix 上表示 -lcurl -lcrypto -lssl
...
(大多数 libcurl 构建也将使用额外的依赖项)。