Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当前目录是否为gcc的默认静态库、动态库和标头搜索路径?_C_Gcc - Fatal编程技术网

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

当前目录是否为gcc的默认静态库、动态库和标头搜索路径?,c,gcc,C,Gcc,GCC简介有一个例子: 将当前目录添加到库搜索路径时需要选项'-L' 这是否意味着当前目录不是静态库文件的默认搜索路径,因此需要通过-L.添加到库搜索路径 动态库文件搜索的类似问题。当前目录是动态库文件的默认搜索路径,还是需要通过--rpath.将当前目录添加到动态库搜索路径 头文件搜索的类似问题。当前目录是头文件的默认搜索路径,还是需要通过-I.将当前目录添加到头搜索路径? 以下示例是否意味着当前目录是头文件的默认搜索路径,并且我们不需要通过-I.将当前目录添加到头搜索路径 $ ls main

GCC简介有一个例子:

将当前目录添加到库搜索路径时需要选项'-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将始终搜索当前工作目录,无论它是否位于标头搜索路径上。同样地,
-I.
只有在您使用
#include
将文件包含在项目目录中时才是必需的(您确实不应该这样做,因为这会让试图阅读您的代码的人感到困惑)。

谢谢。(1) 在“当前工作目录不是默认库或标题搜索路径的一部分”中,您是指“库”中的静态和动态库搜索路径吗?(2)
#是否包含“文件”
搜索默认系统路径?(3)
gcc-L
C#u INCLUDE_PATH
是否都会影响
#INCLUDE“file”
#INCLUDE
?关于
#INCLUDE“file”
的部分具有误导性。这类include指令搜索的位置与其他表单搜索的位置相同,但它们可能首先搜索一个或多个其他实现定义的目录。一些实现,包括GCC,在这种情况下会搜索包含源文件的目录(首先)。有的搜索工作目录,有的搜索附加目录。
“double quotes.h”
中包含的标题首先在一些附加位置查找(例如当前目录,或者源文件所在的目录,或者在处理嵌套标题时找到当前标题的目录),然后在相同的位置列表中,就好像它们被包含在
中一样。C标准要求“额外的位置,然后与尖括号相同”;它没有规定那些额外的位置是什么。POSIX确实规定了(至少一些)额外的位置。@Tim 1)动态库搜索路径是在运行时解析的……嗯,是动态的。链接器标志可以影响搜索的方式,但细节往往高度依赖于系统。2) 由其他人处理并编辑。3) 假设你的意思是
-I
,而不是
-L
(这只适用于库),是的。@JonathanLeffler谢谢。“包含在
”双引号.h“
中的标题首先在一些其他位置(例如当前目录,或源文件所在的目录,或者在处理嵌套标题时找到当前标题的目录)中查找,然后在相同的位置列表中查找,就像它们包含在
中一样。”。对于
“double quotes.h”
,gcc是否在
gcc-I
C_INCLUDE_PATH
指定的目录之前搜索当前目录?
$ 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
$