2015-11-08 33 views
-4

我正在編譯使用make的C/C++項目。但是,編譯過程會失敗,並顯示以下錯誤消息 - **編譯lib/crypto/rsaCipher.c C:/ Davidviewservermain \ sysimg-ufa \ bora \ vmacore-for-ufa-src \ bora \ lib \ crypto \ rsaCi pher.c(15):致命錯誤C1083:無法打開包含文件:'openssl/rsa.h':無su ch文件或目錄,,我看到rsaCipher.c是包含rsa.h文件的哈希。但是,make過程無法打開頭文件,即使它存在於openssl文件夾中。 make過程如何找到頭文件的位置?他們的任何環境變量如INCLUDE都會給出將由make進程檢查的所有頭文件的搜索路徑。我在Windows中使用make。使文件無法打開標題

+0

C:/ Davidviewservermain \ sysimg-ufa \ bora \ vmacore-for-ufa-src \ bora \ lib \ crypto \ rsaCipher.c(15):致命錯誤C1083:無法打開包含文件:'openssl/rsa.h ':沒有這樣的文件或目錄 – user496934

+0

以上是完整的錯誤信息 – user496934

+1

這是什麼尷尬的_「問題」_請問這是什麼?超過800名代表,您應該知道如何發佈有效問題和[MCVE]。至少分別顯示你的makefile,CMakeLists.txt。 –

回答

0

make過程如何找到頭文件的位置?

它不,它不需要。這是編譯器 *需要找到它們,並且它通過告訴它在您配置包括搜索路徑時的外觀。

是他們的任何環境變量像INCLUDE給所有的頭文件的搜索路徑,這將通過make進程檢查。

這是基於編譯器而不是make。如果你的編譯器檢查包含搜索路徑的任何環境變量,那麼你可以在運行make之前設置它。

但是通常你,而不是你的Makefile中設置了一個變量,然後使用該變量在你的編譯規則:

INC=-I/usr/informix/incl/c++ /opt/informix/incl/public 

main: test.cpp 
     gcc -Wall $(LIB) $(INC) -c test.cpp 

注意上面顯示你如何把包括一個編譯命令的路徑,但它是沒有顯示最佳實踐:依賴關係不正確,因此在應該重建目標時,並不總是知道它需要重建目標。我沒有詳細地看過它,但this問題和答案可能會幫助您生成強大的makefile。

*好吧,預處理器真的,但現代工具鏈嵌入在編譯器可執行文件中,或由編譯器驅動程序自動調用。