2

我在 Windows 上curl 7.28.0从控制台安装到默认目录,例如curl-7.28.1-devel-mingw32.zipminGW

./config && make && make install

curl.h, types.h ...我看到的所有需要​​的标题(又名)C:\MinGW\msys\1.0\local\include\curl

libcurl.pc放在 C:\MinGW\msys\1.0\local\lib\pkgconfig\

libcurl.a,libcurl.dll.alibcurl.la置于C:\MinGW\msys\1.0\local\lib.

我的download_file.c文件包括:

...
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
...

我尝试C通过以下命令编译代码gcc

$ gcc -IC:/MinGW/msys/1.0/include/ 
      -IC:/MinGW/msys/1.0/local/include/curl
      -IC:/MinGW/msys/1.0/local/lib/pkgconfig
           -o download_file download_file.c -llibcurl -lcurl

使用绝对路径得到相同的错误:

gcc -I/include/
    -I/local/include/curl
    -I/local/lib/pkgconfig
        -o download_file download_file.c -llibcurl -lcurl

但我仍然得到一个错误:

download_file.c:21:23: fatal error: curl/curl.h: No such file or directory compilation terminated.

第 21 行是#include <curl/curl.h>

我做错了什么?请帮忙。

4

3 回答 3

2

curl/在源代码中有目录,有在选项中。

似乎该选项应该指出更高级别的目录curl/,所以它应该是这样的:

-I/local/include/
于 2012-12-11T13:39:27.270 回答
1

我认为问题很可能是您在命令行上以 Win32 路径格式提供包含路径。这与 msys(或最终 Cygwin)使用的不同。

试试这些:

$ gcc -I/include/ 
      -I/local/include/curl
      -I/local/lib/pkgconfig
      ...

希望我得到了正确的绝对路径,但你可以检查你的 msys shell。

让我失望的是你使用./config,它不能在命令提示符下工作,但可以在 msys shell 中工作。所以你需要给出MinGW中所有程序都能理解的路径。

基本上,MinGW 中的大多数程序只有一个文件系统根的概念,就像在任何 unixoid 系统上一样,而 Win32 有多个(驱动器号)。由于 MinGW 程序是相应链接的,因此您需要提供他们理解的路径。

于 2012-12-11T13:31:22.240 回答
0

非常感谢@0xC0000022L 和@unwind。在你的帮助下,我解决了我的问题。

0xC0000022L你是对的绝对路径

放松你是对-I/local/include/-I/local/include/curl

我发现了其他问题:-L/local/lib而不是-I/local/lib.

所以这是一个工作命令:

gcc -I/include/
    -I/local/include
    -L/local/lib
         -o download_file download_file.c  -llibcurl -lcurl
于 2012-12-11T13:46:37.420 回答