使文件无法打开标头

make file not able to open header

本文关键字:文件      更新时间:2023-10-16

我正在使用make编译一个C/C++项目。但是,编译过程失败,并显示以下错误消息:**正在编译lib/crypto/rsaCipher.cC:/Davidviewservermain\sysimg ufa\bora\vmacore for ufa src\bora\lib\crypto\rsaCipher.c(15):致命错误C1083:无法打开包含文件:"openssl/rsa.h":无such文件或目录,我看到rsaCipher.c是包含rsa.h文件的哈希。但是,即使头文件存在于openssl文件夹中,make进程也无法打开它。make过程如何查找头文件的位置?是它们的任何环境变量,如INCLUDE,以提供将由make进程检查的所有头文件的搜索路径。我使用的是嵌入式窗口。

make过程如何查找头文件的位置?

它没有,也不需要。需要查找它们的是编译器*,它通过告诉它在配置包含搜索路径时要查找的位置来实现。

是它们的任何环境变量,如INCLUDE,以提供将由make进程检查的所有头文件的搜索路径。

这是基于编译器,而不是make。如果编译器检查任何环境变量的include搜索路径,则可以在运行make之前设置该路径。

然而,通常情况下,您会在Makefile中设置一个变量,然后在编译规则中使用该变量:

INC=-I/usr/informix/incl/c++ /opt/informix/incl/public
main:   test.cpp
        gcc -Wall $(LIB) $(INC) -c test.cpp

请注意,上面向您展示了如何在编译命令中放置include路径,但它并没有展示最佳实践:依赖关系不正确,因此make并不总是知道它需要在应该重建目标的时候重建目标。我还没有详细研究过,但这个问题和答案可能会帮助您生成健壮的makefile。

*嗯,确实是预处理器,但在现代工具链中,它嵌入在编译器可执行文件中,或者由编译器驱动程序自动调用。