linux 如何找出项目的依赖性?

zpqajqem  于 2023-02-21  发布在  Linux
关注(0)|答案(1)|浏览(104)

尝试从源代码编译git后,我在项目根目录下运行make命令时遇到了以下错误:

44stonelions@pop-os:~/dev/git$ make
    CC oss-fuzz/fuzz-commit-graph.o
In file included from ./commit-graph.h:4,
                 from oss-fuzz/fuzz-commit-graph.c:1:
./git-compat-util.h:380:10: fatal error: openssl/ssl.h: No such file or directory
  380 | #include <openssl/ssl.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:2720: oss-fuzz/fuzz-commit-graph.o] Error 1

克隆openssl并为openssl项目运行make install后,ssl.h头文件现在存在于/usr/local/include/openssl中,现在当我在git根目录下运行make时,它可以找到ssl.h文件,尽管我不需要提供关于这个文件在哪里的任何信息。

  • 默认情况下,make在linux上的哪里搜索包含的头文件?
  • 是否有任何方法来检查或配置它正在搜索的目录?

我是Linux的新手,不太了解文件系统,如果我知道在哪里安装了东西就好了。

vq8itlhq

vq8itlhq1#

不是make在搜索头文件,而是gcc。默认情况下,它也在/usr/local/include中搜索头文件。您可以通过让编译器告诉您来检查搜索的目录列表,如下所示:

$ gcc -v -E - < /dev/null
Using built-in specs.
...
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/11/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
...

上面的命令行告诉编译器在预处理后停止,同时从stdin输入空值。这个技巧允许获得编译器的默认值,尽管它是特定于GCC的。

相关问题