![](/img/trans.png)
[英]Getting error: fatal error: curl/curl.h: No such file or directory #include <curl/curl.h>
[英]Still get 'curl/curl.h: No such file or directory' in spite of all looks proper
我通過minGW
控制台從curl-7.28.1-devel-mingw32.zip
在Windows curl 7.28.0
上安裝了默認目錄,例如:
./config && make && make install
我在C:\\MinGW\\msys\\1.0\\local\\include\\curl
看到的所有必需標頭(aka curl.h, types.h ...
)
libcurl.pc
放在C:\\MinGW\\msys\\1.0\\local\\lib\\pkgconfig\\
libcurl.a
, libcurl.dll.a
和libcurl.la
放在C:\\MinGW\\msys\\1.0\\local\\lib
。
我的download_file.c
文件包括:
...
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
...
我嘗試通過gcc
用以下命令編譯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.h>
我做錯了什么? 請幫忙。
您在源代碼中有curl/
目錄,但在選項中也有。
似乎該選項應指出curl/
所在的更高級別的目錄,因此它應該類似於:
-I/local/include/
我認為問題很可能是您以Win32路徑格式在命令行中提供了包含路徑。 這與msys(或最終是Cygwin)所使用的不同。
試試這些:
$ gcc -I/include/
-I/local/include/curl
-I/local/lib/pkgconfig
...
希望我能使用絕對路徑,但是您可以在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.