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

时间:2014-01-16 08:21:43

标签: c curl libcurl

我有以下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-devlibcurl4-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似乎不起作用。

2 个答案:

答案 0 :(得分:9)

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

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

libcurl是库的名称。

答案 1 :(得分:1)

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

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证书和其他安全标准。