仍然得到'curl / curl.h:没有这样的文件或目录'尽管看起来很合适

时间:2012-12-11 13:27:22

标签: c curl mingw

我在curl 7.28.0curl-7.28.1-devel-mingw32.zip控制台的Windows minGW上安装到默认目录,如:

./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.alibcurl.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>

我做错了什么?请帮忙。

3 个答案:

答案 0 :(得分:2)

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

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

-I/local/include/

答案 1 :(得分:1)

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

试试这些:

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

希望我的absolut路径正确,但你可以检查你的msys shell。

让我感到惊讶的是,您使用的是./config,这在命令提示符下无效,但可以在msys shell中使用。因此,您需要提供MinGW中所有程序都能理解的路径。

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

答案 2 :(得分: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