【发布时间】:2011-09-29 20:55:17
【问题描述】:
通过源代码安装 cURL 后,我需要在 Ubuntu 11.04 中链接 cURL。
.
问题的更正
首先我发现 -l 必须在 -L 之前,然后发现我没有在 makefile 中输入变量。
.
获取 cURL 配置:
在我的终端上:
# curl-config --libs
-L/usr/local/lib -lcurl
# curl-config --cflags
-I/usr/local/include
没关系,这个目录哪里有cURL文件。
我的 Makefile:
# Testing cURL
# MAKEFILE
# C++ Compiler (Default: g++)
CXX = g++
CFLAGS = -Wall -Werror
# Librarys
INCLUDE = -Iusr/local/include
LDFLAGS = -Lusr/local/lib
LDLIBS = -lcurl
# Details
SOURCES = src/main.cpp
OUT = test
all: build
build: $(SOURCES)
$(CXX) -o $(OUT) $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(SOURCES)
我的 C++ 源代码:
#include <iostream>
#include <curl/curl.h>
int main( void )
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return 0;
}
还有错误:
# make
g++ -o test -Iusr/local/include -Wall -Werror -Lusr/local/lib src/main.cpp
/tmp/ccli90i2.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `curl_easy_init'
main.cpp:(.text+0x31): undefined reference to `curl_easy_setopt'
main.cpp:(.text+0x3d): undefined reference to `curl_easy_perform'
main.cpp:(.text+0x4d): undefined reference to `curl_easy_cleanup'
collect2: ld returned 1 exit status
make: ** [build] Erro 1
我知道这是找不到库的错误,但对我来说一切都是正确的
【问题讨论】:
-
为什么说查找库出错?您甚至没有传递
-lcurl(或链接器的适当值)。那不会是问题吗?目前链接器不会尝试根据命令行查找库...