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

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

 ./config && make && make install 

所有需要的标题(aka 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  #include  #include  ... 

我尝试通过gcc使用follow命令编译C代码:

 $ 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/是更高级别的目录,所以它应该是这样的:

 -I/local/include/ 

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

试试这些:

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

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

勾选我的是你使用./config ,它不能从命令提示符工作,但可以从msys shell运行。 因此,您需要提供MinGW中所有程序都能理解的路径。

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

非常感谢@ 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