c++ - 如何在 linux 中将 libcurl 链接到我的 c++ 程序?

标签 c++ linux eclipse libcurl

我需要在我的 ubuntu 机器上编写的一个软件中使用 libcurl。我正在使用 Eclipse 编写和编译所有软件。当我将 libcurl 文件与 .cpp 文件放在同一文件夹中,并将 curl.h 文件包含在 header 中时,当我尝试编译程序时,出现以下错误:

Building target: sms
Invoking: GCC C++ Linker
g++  -o"sms"  ./src/sms.o   
./src/sms.o: In function `main':
/home/geekman/workspace/sms/Debug/../src/sms.cpp:38: undefined reference to `curl_easy_init'
/home/geekman/workspace/sms/Debug/../src/sms.cpp:42: undefined reference to `curl_easy_setopt'
/home/geekman/workspace/sms/Debug/../src/sms.cpp:44: undefined reference to `curl_easy_setopt'
/home/geekman/workspace/sms/Debug/../src/sms.cpp:46: undefined reference to `curl_easy_perform'
/home/geekman/workspace/sms/Debug/../src/sms.cpp:47: undefined reference to `curl_easy_cleanup'
collect2: ld returned 1 exit status
make: *** [sms] Error 1

我从 libcurl 中获取了 include 文件夹的内容,并将它们放在与 .cpp 文件相同的文件夹中。然后在 .cpp 文件的标题中,我输入:

#include <curl/curl.h>

我也试过了:

#include "curl/curl.h"

对这个问题有什么想法吗?谢谢。

最佳答案

你的头文件包含就好了;您的问题发生在链接步骤。为了链接 libcurl,您需要添加 -lcurl 命令行选项,假设它安装在标准目录中:

g++ -o sms ./src/sms.o -lcurl

如果没有安装在标准目录下,还需要添加-L/path/to/libcurl,例如类似:

# Assuming that /home/geekman/workspace/libcurl is where libcurl.a is located
g++ -o sms ./src/sms.o -L/home/geekman/workspace/libcurl -lcurl

另请注意,-lcurl 选项必须出现在您要链接的目标文件列表之后,否则将无法正确链接。

关于c++ - 如何在 linux 中将 libcurl 链接到我的 c++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6302282/

相关文章:

c++ - sprintf() 正在添加一个额外的变量

c++ - 使用 Boost::graph 随机访问顶点

linux - 使用 sudo 时找不到命令

php 全局在类内但在函数外?

java - 在 Windows 7(64 位)上,是否只需要安装 64 位 Java 和 64 位 Eclipse?

java - 使用 eclipse 和 maven 2,如何获取 sqljdbc4 的依赖项?

c++ - 使用 SSE 加速浮点 5x5 矩阵 * vector 乘法

c++ - x509 在 C 中的 openssl

linux - 如何在 pyqt4 的 textEdit 中显示 os.system()

java - 刷新 eclipse 应用程序中的导航 View