gcc当前目录是否为默认静态库,动态库和标头搜索路径?

时间:2019-04-12 21:32:29

标签: c gcc

GCC简介有一个示例:

$ gcc -Wall -L. main.c -lhello -o hello 
     

需要选项“ -L。”才能将当前目录添加到库搜索路径。

这是否意味着当前目录不是静态库文件的默认搜索路径,因此需要通过-L.添加到库搜索路径中吗?

动态库文件搜索类似的问题。当前目录是动态库文件的默认搜索路径,还是我们需要通过--rpath .将当前目录添加到动态库搜索路径?

头文件搜索的类似问题。当前目录是头文件的默认搜索路径,还是我们需要通过-I.将当前目录添加到头文件搜索路径? 以下示例是否表示当前目录是头文件的默认搜索路径,并且我们不需要通过-I.将当前目录添加到头文件搜索路径?

谢谢。

$ ls main.c hello.h
hello.h  main.c

$ cat main.c
#include "hello.h"
int
main (void)
{
  hello ("world");
  return 0;
}

$ gcc -c main.c
$

1 个答案:

答案 0 :(得分:1)

当前工作目录不属于编译器默认库或标头搜索路径的一部分。

但是,格式为#include "file"(带有引号)的include将始终搜索当前工作目录,而不管其是否位于标题搜索路径中。因此,-I.仅在您使用#include <file>将文件包含在项目目录中时才是必需的(您实际上不应该这样做,因为它会使尝试读取您的代码的人迷惑)。