当前位置: 首页 > 面试题库 >

如何在Linux中将libcurl链接到我的C ++程序?

云俊名
2023-03-14
问题内容

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

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选项必须出现 要链接的目标文件列表 之后 ,否则将无法正确链接。



 类似资料:
  • 我正在将Code::Blocks IDE(v13.12)与GNU GCC编译器一起使用。 我想使用链接器链接我的程序所需的运行库的静态版本,我可以怎么做 我已经知道我的可执行文件的大小会增加,你能告诉我其他的缺点吗 在Visual C Express中执行此操作怎么样

  • 我正试图在我的vue应用程序上创建一个链接到本地pdf文件。现在我的问题是。 我的PDF文件位于assets/static/中,并且现在像这样链接到它们。

  • 当我使用g编译一个使用STL的程序时,库是如何链接到我的程序的?动态还是静态? 对我来说,静态听起来很奇怪,因为这意味着每一个使用STL的C程序都必须在内部包含它。另一方面,动态链接对我来说也很奇怪,因为对于所有OOP的东西,我不知道如何动态链接库并支持不同类型的对象。。。 那么这里到底发生了什么?

  • 问题内容: 我试图将静态库(与gcc一起编译)链接到C 程序,但出现了“未定义引用”。我在ubuntu 12.04服务器计算机上使用了gcc和g 版本4.6.3。例如,这是阶乘方法的简单库文件: mylib.h mylib.c 我使用gcc为此mylib.c创建了对象: 再次使用AR实用工具从目标文件创建了静态库: 我用C程序(test.c)和C ++程序(test.cpp)测试了这个库 C和C

  • 问题内容: 我的程序是用C ++编写的。使用-g3-O0-ggdb标志使用gcc编译。当它崩溃时,我想打开它的核心转储。它会创建核心转储文件,还是我需要做一些事情以在程序本身或在执行该文件的计算机上启用核心转储创建?该文件的创建位置以及名称是什么? 问题答案: 您需要设置。如果此参数的值为0,则不会创建coredump文件。这样做:并检查是否一切正确。当应用程序完成某些不适当的操作时,将创建cor

  • 问题内容: 如何在Eclipse中将源链接到jar包? 我正在尝试添加外部库。 我将jar文件添加到了构建路径,但是当我尝试运行该应用程序时,它返回了以下错误: jar文件ch.ntb.usb没有源附件。 我已经使用JD-GUI来反编译jar文件,并且包含了源代码。 问题答案: 解压缩jar文件后,我将带有jd-gui的所有资源“ ch.ntb.usb.src”保存到了我的构建路径中。然后,将外部