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
$

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

但是,包含表单#include "file"(带引号)将始终搜索当前工作目录,无论它是否在标头搜索路径上。因此,仅当您使用#include <file>在项目目录中包含文件时才需要-I.(您真的不应该这样做,因为它会混淆任何试图阅读您的代码的人)。

最新更新