我在编译使用libcurl的程序时遇到了问题。
我使用的环境是VM上的CentOS 6.6,我收到的错误表明该库有:
我做了
sudo yum install libcurl
后跟sudo yum install libcurl-devel
后跟sudo yum update
似乎curl.h
已置于/usr/include/curl
之下,这似乎是正确的,所以我不确定为什么会发生这种情况。
值得注意的是,正在编译#include <curl/curl.h>
的测试程序。
另外,当没有安装libcurl-devel时(只有libcurl),
curl.h
,正如所料,/usr/include/
下没有正如预期的那样的curl目录/usr/bin/
下安装了一个curl文件。在Ubuntu中,我只需要安装libcurl-openssl
一些gcc错误示例:
$gcc new.c -lcurl
new.c: In function ‘main’:
new.c:74: error: ‘CURLOPT_MAIL_FROM’ undeclared (first use in this function)
new.c:74: error: (Each undeclared identifier is reported only once
new.c:74: error: for each function it appears in.)
new.c:81: error: ‘CURLOPT_MAIL_RCPT’ undeclared (first use in this function)
答案 0 :(得分:0)
如果你是从CentOS RPM安装libcurl-devel那么它绝对应该不将标题或其他任何东西放在MyCompany/Net/MyModule.pm
中。 /usr/local/curl
适用于本地构建的组件,不适用于操作系统提供的组件。究竟是什么意思可以成为辩论的主题,但我可以确认libcurl-devel的CentOS 6 RPM在/usr/local
中安装标题。
在这种情况下,如果安装了CentOS的/usr/include/curl
,那么您不需要任何特殊的编译器标志来让编译器解析
libcurl-devel
正确,但如果您的系统上某处有#include <curl/curl.h>
,那么您可以选择它。尽管如此,虽然我可能认为编译器会自动找到curl.h
(即没有/usr/local/include/curl/curl.h
),但听到它自动找到-I/usr/local/include
我会感到非常惊讶。
但这可能不是你的问题。 CentOS 6提供了libcurl的7.19版。该版本不提供您尝试使用的宏,至少在libcurl-devel中不提供。我已经检查了与Ubuntu的libcurl-openssl相对应的可能的附加软件包,但是没有CentOS 6软件包(或EPEL / el6软件包)名称中包含“curl”和“ssl”。
如果您可以确定所需的最低版本的libcurl,您可以自己构建它。在这种情况下,我更喜欢从Fedora's Koji system获取源RPM,在本地系统上从中构建RPM,并安装它们(可能在此过程中更新现有的RPM)。或者,您可以构建和使用私有副本,但在这种情况下,您需要将其静态链接到您的程序中。