gpt4 book ai didi

c++ - CentOS 6.6 上的 libcurl-devel 缺少函数定义

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:01 25 4
gpt4 key购买 nike

我在编译使用 libcurl 的程序时遇到问题。

我使用的环境是虚拟机上的 CentOS 6.6,我收到错误提示该库有:

  1. 未正确安装或
  2. 找不到。

我做了一个

  • sudo yum install libcurl接着是一个
  • sudo yum install libcurl-devel接着是一个
  • sudo yum update

似乎 curl.h已归入/usr/include/curl这似乎是正确的,所以我不确定为什么会发生这种情况。

值得注意的是一个带有#include <curl/curl.h>的测试程序正在编译。

另外,当 libcurl-devel 没有安装时(只有 libcurl 是),

  • gcc 提示找不到curl.h , 正如预期的那样,
  • /usr/include/ 下也没有 curl 目录, 正如预期的那样,
  • 但是 libcurl 确实在 /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)

最佳答案

如果您从 CentOS RPM 安装 libcurl-devel,那么它绝对不应该将 header 或其他任何东西放在 /usr/local/curl 中。 /usr/local 用于本地构建的组件,而不是操作系统提供的组件。这究竟意味着什么可以成为争论的主题,但我可以确认 CentOS 6 RPM for libcurl-devel 在 /usr/include/curl 中安装 header 。

在这种情况下,如果安装了 CentOS 的 libcurl-devel,那么您应该不需要任何特殊的编译器标志来让编译器解析

#include <curl/curl.h>

正确,但是如果您碰巧在系统中的某处有不同的 curl.h,那么您可以改为选择它。尽管如此,尽管我可能相信编译器会自动找到 /usr/local/include/curl/curl.h (也就是说,没有 -I/usr/local/include ),听到它自动找到 /usr/local/curl/curl.h,我会感到非常惊讶。

但这可能不是你的问题。 CentOS 6 提供了 7.19 版的 libcurl。该版本不提供您尝试使用的宏,至少在 libcurl-devel 中不提供。我已经检查了一个可能对应于 Ubuntu 的 libcurl-openssl 的附加包,但是没有 CentOS 6 包(或 EPEL/el6 包)的名称中同时包含“curl”和“ssl”。

如果您能确定您需要的 libcurl 的最低版本,您可能可以自己构建它。在这种情况下,我更喜欢从 Fedora's Koji system 获取源 RPM ,在本地系统上从中构建 RPM,并安装它们(可能会在此过程中更新现有的 RPM)。或者,您可以构建并使用私有(private)拷贝,但在这种情况下,您需要将其静态链接到您的程序中。

关于c++ - CentOS 6.6 上的 libcurl-devel 缺少函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com