curl/curl.h、libcurl、libcurl4-openssl-dev、libcurl4-nss-dev 库之间的区别?

问题描述 投票:0回答:2

我有以下curl标头,并且我仍然可以安装上面提到的libcurl4软件包-

kafka@metamorphosis:~$ ll /usr/include/curl/
total 200
drwxr-xr-x  2 root root  4096 Jan 16 13:29 ./
drwxr-xr-x 51 root root 20480 Jan 16 13:29 ../
-rw-r--r--  1 root root  7303 Dec 18 01:11 curlbuild.h
-rw-r--r--  1 root root 83928 Dec 18 01:11 curl.h
-rw-r--r--  1 root root  8934 Dec 18 01:11 curlrules.h
-rw-r--r--  1 root root  2741 Dec 18 01:11 curlver.h
-rw-r--r--  1 root root  3472 Dec 18 01:11 easy.h
-rw-r--r--  1 root root  2790 Dec 18 01:11 mprintf.h
-rw-r--r--  1 root root 13836 Dec 18 01:11 multi.h
-rw-r--r--  1 root root  1330 Dec 18 01:11 stdcheaders.h
-rw-r--r--  1 root root 36918 Dec 18 01:11 typecheck-gcc.h

libcurl4-openssl-dev
libcurl4-nss-dev
彼此之间以及与这些curl.h文件有何不同?

在ubuntu中使用apt-get安装这两个包后,我注意到以下文件-

/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.3.0
/usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.la
/usr/lib/x86_64-linux-gnu/libcurl.so.3
/usr/lib/x86_64-linux-gnu/libcurl.a
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so
/usr/lib/x86_64-linux-gnu/pkgconfig/libcurl.pc

现在,如果我有一个程序,其中包含类似 -

#include<curl/curl.h>
的行,我该如何编译它?

gcc -L /usr/include/curl/ -lcurl nginx-isolated.c
好像不起作用。

c curl libcurl
2个回答
14
投票

不同的 libcurl4-*-dev 软件包是为使用不同的 TLS 后端而构建的 libcurl。它们仍然提供(几乎)相同的 API。它们是互斥的,无论您安装哪个软件包,您都可以使用“-lcurl”与 libcurl 链接。

curl/curl.h 是一个头文件,无论您使用哪个 TLS 后端都是相同的。

libcurl 是库的名称。


3
投票

当您使用由商店中存在的 CA 签名的证书使用 HTTPS、FTPS 或其他使用 TLS 的服务器进行通信时,您可以确保远程服务器确实是它所声称的服务器。这样您就可以验证信任站点。

LibCurl 具有三种风格的 TLS 后端。

  • NSS 证书验证
  • 使用 OpenSSL 进行证书验证
  • 使用 GnuTLS 进行证书验证

这三个库都是用于建立安全链接和验证信任 CA 证书的库,但每个库都有自己的功能、优缺点。

OpenSSL 是一个强大的商业级且功能齐全的工具包,适用于传输层安全 (TLS) 和安全套接字层 (SSL) 协议。它也是一个通用的密码学库。

GnuTLS 是一个安全通信库,实现了 SSL、TLS 和 DTLS 协议及相关技术。它提供了一个简单的 C 语言应用程序编程接口 (API) 来访问安全通信协议以及解析和编写 X.509、PKCS #12 和其他所需结构的 API。

网络安全服务 (NSS) 是一组库,旨在支持支持安全的客户端和服务器应用程序的跨平台开发。使用 NSS 构建的应用程序可以支持 SSL v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 证书和其他安全标准。

非常重要的是,在编程时,您必须选择一个要使用的库,因为不可能将它们组合起来。

© www.soinside.com 2019 - 2024. All rights reserved.