我是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'
请帮帮我, 感谢
答案 0 :(得分:2)
这通常意味着您的程序无法链接到
右.a
或.so
文件解析curl_easy_init函数。
.a用于静态链接。 a代表档案。
.so用于动态链接的情况。所以代表共享对象。
虽然您可以使用libcurl.a
或libcurl.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执行相同的操作
答案 1 :(得分: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)