我们正在使用CentOS6(Linux)并尝试仅通过C / C ++连接网络服务器。
我的研究:
我找到了能够与webserver通信的curl库
所以我在http://curl.haxx.se/download.html
我能够包含“curl / curl.h”,但无法编译他们的方法。
问题:
请让我知道我们平台的curl版本以及如何添加-lcurl进行编译。 (例如:g ++ -lcurl api api.c)
请详细解释,因为它对我来说更重要。提前致谢。
-Vasanth
答案 0 :(得分:8)
您的问题并非特定于curl
:gcc
的参数顺序很重要:编译器选项,然后是源文件,然后是目标文件,然后是库(从高级到低级) );所以尝试用
gcc -Wall -g prog.c -lcurl -o binprog
或(对于C ++程序)
g++ -Wall -g otherprog.cc -lcurl -o binotherprog
当然你需要开发包,例如libcurl-dev
或libcurl3-gnutls-dev
或libcurl4-gnutls-dev
(打包在Ubuntu中);在您的CentOS发行版中,它可能被称为libcurl-devel
或其他内容。
您应该安装您的发行版提供的开发包(适用于libcurl
),而不是http://curl.haxx.se/download.html
实际上,您还应该学习如何使用GNU make
(构建器)和gdb
(调试器)。
答案 1 :(得分:1)
使用gcc
(和变体)
库必须是link命令的最后一个。
这是因为链接器按从左到右的顺序处理命令行参数。
如果库位于目标文件之前,则在处理库时,不会解析未解析的外部引用。
处理完目标文件后,还有未解析的外部引用,因此库必须是最后的。
答案 2 :(得分:0)
以下是您应该如何处理
从此链接安装curl http://curl.haxx.se/download.html 如果你已经安装了这个,请转到此页面