簡體   English   中英

盡管看起來一切正常,但仍然得到“ 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.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>
...

我嘗試通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM