【问题标题】:Problems with lcurl in CLionCLion 中 lcurl 的问题
【发布时间】:2015-11-22 14:47:00
【问题描述】:

我是 CLion 的新手,我想提高我在 libcurl 方面的技能。我已经在 Ubuntu 15.04 上安装了 libcurl4-openssl-dev。我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.3)
project(test)


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lcurl")
set(SOURCE_FILES main.cpp)
add_executable(test ${SOURCE_FILES}) 

但是当我尝试这个时:

#include <iostream>
#include <curl/curl.h>
#include <string>

using namespace std;

int main() 
{
    CURL *curl;
    CURLcode result;
    curl = curl_easy_init();
    return 0;
}

他给我看这样的错误:

/home/me/ClionProjects/test/main.cpp:10: undefined reference to `curl_easy_init'

请帮帮我, 谢谢

【问题讨论】:

  • 使用命令行编译(例如g++ -Wall -Wextra -g main.cpp -lcurl -o myprog)或使用make并拥有自己的Makefile
  • @BasileStarynkevitch 通过控制台工作,但是,为什么 CLion 不能工作?
  • 我不知道 CLion,也从未使用过它。我更喜欢命令行的东西。而且我听说的所有 C++ 编译器实际上都是命令行程序(可能出售或提供一些额外的 IDEabove)。
  • 好的,谢谢,顺便说一句

标签: c++ libcurl clion


【解决方案1】:

这通常意味着您的程序无法链接到
.a.so文件解析curl_easy_init函数。

.a 用于静态链接的情况。 a 代表存档。
.so 用于动态链接的情况。 so 代表共享对象。

虽然您可能有 libcurl.alibcurl.so 可用,但它
可能是链接器在执行时无法找到那些。

指定链接器将在其中查找库的目录,如下所示。

要查找 libcurl.a 的位置,您可以以 root 身份运行以下命令:

find / -name libcurl.a 

假设上面的命令给出:

/libcurl/folder/libcurl.a 

作为输出,您可以在 CMakeLists.txt 文件中添加以下行。

link_directories(/libcurl/folder /any/additional/path)

然后可以通过使用将目标链接到库。

target_link_libraries(test libcurl)

如果你正在做动态链接,你应该对 libcurl.so 做同样的事情

【讨论】:

  • 我添加了这一行:“link_directories(usr/local/lib)”,但仍然有同样的错误。命令行给了我2个文件夹,但都没有解决问题
  • target_link_libraries 怎么样?我不确定-lcurl 是否足够。
  • 嗯,上面写着:Cannot specify link libraries for target "libcurl" which is not built by this project.
  • 很好,这很重要,但是:/usr/bin/ld: cannot find -llibcurl collect2: error: ld returned 1 exit status 这是错误。我也在尝试 curlpp,它也不起作用
  • 它会自动附加 lib 吗?不?在 cmake 中将 libcurl 更改为 curl。试一试。
【解决方案2】:

感谢@sjsam。 解决方案是(CMakeLists.txt):

cmake_minimum_required(VERSION 3.3)
project(example)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lcurl")

set(SOURCE_FILES main.cpp)
add_executable(example ${SOURCE_FILES})
target_link_libraries(example curl)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-12
    • 2021-08-07
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2011-06-23
    相关资源
    最近更新 更多