首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gcc -MMD是怎么写.d文件的?

gcc -MMD是怎么写.d文件的?
EN

Stack Overflow用户
提问于 2014-04-20 13:04:21
回答 1查看 1.6K关注 0票数 0

gcc是如何决定在写入.d文件时,将哪些文件作为生成的对象文件的依赖项列出的?

当sysroot路径是绝对的和相对的时,我会看到不同的.d文件。

代码语言:javascript
运行
复制
g++ --MMD --sysroot=absolute_path_to_sysroot -c -o file.o -MF file.d file.cpp
g++ --MMD --sysroot=relative_path_to_sysroot -c -o file.o -MF file.d file.cpp

我看到了一个奇怪的情况,如果编译器路径和-sysroot是绝对的,那么两个额外的头文件将被列为.d文件中的依赖项。

如果--sysroot是相对的,那么两个额外的头文件不再被列为.d文件中的依赖项。

这让我想知道,除了包含了一个头之外,还有什么条件,.d文件实际上是由编译器编写的,而sysroot将如何影响这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-20 16:30:45

据我所知,它基于找到文件的实际目录。

实际的“让这成为一个依赖”发生在这里,其中sysp是根据它所在的目录在上面的几行设置的。

http://gcc.gnu.org/viewcvs/gcc/trunk/libcpp/files.c?revision=206293&view=markup#l884

sysp在这里设置:

http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/incpath.c?revision=206289&view=markup#l446

现在,如果同一个目录同时位于-I-isystem目录中,则会变得复杂。在这种情况下,它取决于文件是否包含在#include <name>#include "name"中--只有在使用-MD-M等时才选择使用<>的文件,其中-MMD将忽略使用<>的任何内容(或者在标记为sysp的目录中)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23182778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档