首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

包含子目录的Makefile找不到标头

Makefile是一种用于自动化构建和编译程序的工具,它通过定义一系列规则来描述源代码文件之间的依赖关系和编译过程。当Makefile中包含子目录时,可能会出现找不到标头文件的问题。

解决这个问题的方法有以下几种:

  1. 确保Makefile中正确设置了子目录的路径。在Makefile中,可以使用变量来表示子目录的路径,例如:
代码语言:txt
复制
SUBDIRS = subdir1 subdir2

然后,在编译规则中使用这些变量来指定子目录的路径,例如:

代码语言:txt
复制
$(SUBDIRS):
    $(MAKE) -C $@
  1. 确保子目录中的Makefile正确设置了标头文件的路径。在子目录的Makefile中,可以使用变量来表示标头文件的路径,例如:
代码语言:txt
复制
INCLUDES = -I../include

然后,在编译规则中使用这些变量来指定标头文件的路径,例如:

代码语言:txt
复制
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
  1. 确保标头文件的路径在编译器的搜索路径中。可以通过在Makefile中设置编译器选项来指定标头文件的搜索路径,例如:
代码语言:txt
复制
CFLAGS = -I../include

这样,编译器在查找标头文件时会在指定的路径中进行搜索。

  1. 确保标头文件的命名和路径正确。检查Makefile中对标头文件的引用是否正确,包括文件名和路径是否与实际文件相匹配。

总结起来,解决包含子目录的Makefile找不到标头的问题,需要确保Makefile中正确设置了子目录的路径,子目录的Makefile正确设置了标头文件的路径,标头文件的路径在编译器的搜索路径中,以及标头文件的命名和路径正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过 HTTP 标头的 XSS

但不幸的是,一旦攻击者无法让受害者在实际的 XSS 攻击中编辑他/她自己的 HTTP 标头,那么只有在攻击者有效负载以某种方式存储时才能利用这些场景。...\n”; 正如我们在下面看到的,在带有 -i 标志的命令行中使用 curl,它会向我们显示响应的 HTTP 标头以及包含我们的请求标头的 JSON。...由于我们在这篇博客中使用的 WAF 提供的最后一个标头“x-sucuri-cache”,我们需要在 URL 中添加一些内容以避免缓存,因为该标头的值是“HIT”,这意味着它即将到来来自 WAF 的缓存。...因此,通过添加“lololol”,我们能够检索页面的非缓存版本,由 x-sucuri-cache 标头值“MISS”指示。现在我们将注入我们自己的标头(带有 -H 标志)以检查它是否在响应中出现。...但仅对我们而言,因为我们通过终端发送该标头。它不会出现在浏览器、其他人甚至我们自己的请求中。 发出了另一个请求(在“日期”标头检查时间),但似乎没有什么区别。

2.1K20

通过主机标头的 XSS

Location 标头看起来并不正确......所以这是 IE 所做的: GET /login.phphp/ HTTP/1.1 Accept: text/html, application/xhtml+...图片说明了一切: image.png 继续前进,您可能会期望服务器会倾向于以 400 Bad Request 响应这样一个奇怪的 Host 标头。这通常是真的.........image.png 但幸运的是,Google 在处理 Host 标头时存在一些怪癖,可以绕过它。 怪癖是在主机头中添加端口号。它实际上没有经过验证,您可以在冒号后放置您喜欢的任何字符串。...好的,让我们继续讨论 Google CSE XSS。它看起来就像这样: 主机标头清楚地反映在响应中,无需任何编码。...3a443%2fcse%2ftools%2fcreate_onthefly%3b% 3c%2ftextarea%3e%3cscript%3ealert(1)%3c%2fscript%3e 期望下一个请求将包含以下主机标头

1.6K10
  • C++ 中的随机标头系列1

    这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情 此标头引入了随机数生成功能。该库允许使用生成器和分布的组合生成随机数。 生成器:生成均匀分布的数字的对象。...分布:将生成器生成的数字序列转换为遵循特定随机变量分布(如均匀、正态或二项式)的数字序列的对象。 发电机 一、伪随机数引擎: 他们使用一种算法根据初始种子生成随机数。...operator(): 它返回一个新的随机数。 引擎的转换算法根据需要多次调用基础引擎的 operator() 成员,以获得足够的有效位来构造随机值。...该对象在内部保留一个由 k 个生成的数字组成的缓冲区,并在请求时返回缓冲区内随机选择的数字,并将其替换为从其基本引擎获得的值。 operator(): 它返回一个新的随机数。...引擎的转换算法在内部表中选取一个值(由函数返回),并将其替换为从其基础引擎获得的新值。 max: 它返回operator()给出的最大值。 最小值: 它返回 operator() 给出的最小值。

    1.3K10

    使用结构化的标头字段改善HTTP

    ● 大多数Web开发人员都熟悉HTTP标头;如Content-Length、Cache-Control和Cookie之类。...因为标头需要由许多不同的客户端和服务器,代理服务和CDN处理(通常在消息的生存期内不止一次),所以大家希望它们易于处理,高效解析并且定义明确句法。...例如,他们可以说“这是一个字符串列表”,人们将知道如何使用一个现成的库来明确地解析和生成标头,而不是编写特定于头的代码。...Example-Header: "blue"; websafe, "sort of red"; author="sue", "green" 递归的形式也很有限;列表和字典值也可以包含列表,例如: Example-Header...例如,许多Cache-Control报头都是有效的“结构化字段”,即使它没有定义为一个: Cache-Control: max-age=3600, immutable 很不幸你还不能将结构化字段用于现有的标头

    65510

    对 Google 说不 - 本站已启用屏蔽 FLoC 的 HTTP 标头

    什么是 FLoC FLoC 通过获取浏览器的浏览记录将用户加入 “相似” 用户的分组内,每个分组拥有对应的 FLoC ID。...为什么要抵制 FLoC FLoC 被拒绝的原因正是目前第三方 Cookie 逐渐消失的原因,我们需要的是第三方 Cookie 的消失,而不是出现一个类似 (甚至在用于追踪的情况下功能更加完善) 的替代品...对这项技术的测试过程被部署到了大量的 Google Chrome 用户身上,而 Google 并没有进行提前的公告等工作,以致于大量用户并不了解这项技术。...EFF 的这篇博文详细解释了部分细节,如果需要的可以尝试阅读一下。...uBlock 等工具进行屏蔽 CloudFlare Browser Insights:CloudFlare 提供的网页性能监测工具,不会收集用户特定的信息 可以做的事 为自己的站点添加相关的拒绝标头:

    86610

    qmake:变量手册

    例如,以下几行将 path/to/header_one.h 和 path/to/header_two.h 添加到包含有关框架提供的标头信息的组中: FRAMEWORK_HEADERS.version...path/to/header_two.h FRAMEWORK_HEADERS.path = Headers QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS 最后一行将有关标头的信息添加到将与库包一起安装的资源集合中...使用此变量指定的每个子目录都必须包含其自己的项目文件。 建议每个子目录中的项目文件与子目录本身具有相同的基本名称,因为这样可以省略文件名。...允许的值为: app:创建用于构建应用程序的 Makefile(默认)。 lib:创建用于构建库的 Makefile。 subdirs:创建用于在子目录中构建目标的 Makefile。...子目录是使用 SUBDIRS 变量指定的。 aux:为不构建任何内容的项目创建一个 Makefile。 如果不需要调用编译器来创建目标,请使用此选项。例如,项目是用解释性语言编写的。

    3.9K20

    一个通用的Makefile(二)

    1、各级子目录的Makefile: obj-y += file.o obj-y += subdir/ “obj-y += file.o” 表示把当前目录下的file.c编进程序里。...framwork子目录下又有libs、manager、services等子目录; 编译过程: Makefile是先从子目录下开始执行的: 1> 执行顶层目录的makefile程序时,先进入顶层目录,发现有些文件和目录...,将会进入如DSVICICOMSVC/ 2> 进入子目录后,又会发现又有子目录的makefile,DSVICICOMSVC、DSVICICOMMGR,执行子目录的makefile; 3> 把test.c...make -C ./ -f  Makefile.build    3、顶层目录的Makefile.build: 这是最复杂的部分,它的功能就是把某个目录及它的所有子目录中、需要编进程序去的文件都编译出来...#包含当前目录的makefile,才知道目标是哪些目标和目录 # obj-y := a.o b.o c/ d/ # $(filter %/, $(obj-y))   : c/ d/ # __subdir-y

    1.6K111

    图解嵌入式系统开发之Makefile篇

    看了好多网文,博客之后,你是否仍然一头雾水,这TM到底是怎么联系起来的,为什么会有这么多Makefile文件?...我们可以把导出的依赖关系保存成一个文件,然后在下次编译的时候使用Makefile的include功能包含该文件。这样就可以自实现只编译被修改文件的梦想了。。。。?...主Makefile: 主Makefile一般在源码的根目录下, 是执行Make命令读取的第一个Makefile文件,该文件中定义了最终产物的名字,源文件的子目录,启动递归编译,合成最终产物规则,clean...如下: obj-y := main.o obj-y += cmd/ Makefile.build递归到该目录的时候首先包含了该目录下的Makefile文件,然后读取obj-y的值,读到obj-y中 main.o...所以这是一个不断递归的过程,进入到一个目录下,通过当前目录下Makefile判断是否有子目录,如果有子目录,就按照同样的方式先进入到子目录下去处理。

    1.3K40

    CmakeList的编写和参数详解

    大家好,又见面了,我是你们的朋友全栈君。 在linux 下进行开发很多人选择编写makefile 文件进行项目环境搭建,而makefile 文件依赖关系复杂,工作量很大,搞的人头很大。...采用自动化的项目构建工具cmake 可以将程序员从复杂的makefile 文件中解脱出来。...cmake 根据内置的规则和语法来自动生成相关的makefile 文件进行编译,同时还支持静态库和动态库的构建,我把工作中用到的东东总结在此,方便忘记时随时查看,具体cmake的介绍和详细语法还是参考官方文档...ADD_SUBDIRECTORY(utility) 添加要编译的子目录 为工程主目录下的存放源代码的子目录使用该命令,各子目录出现的顺序随意。...(server libutility.a) 否则编译总会提示找不到libutility库文件。

    2.2K50

    makefile从入门到放弃——博主吐血整理的笔记

    自动变量: 变量名 变量含义 – $* 不包含扩展名的目标文件名称 – $+ 所有的依赖文件,以空格分开,并以出现后的先后为序,可能包含重复依赖文件 – $的名称 – $?...C dir读入指定目录下的makefile -f file读入当前目录下的file文件作为makefile -i 忽略所有命令执行错误 -I dir制定被包含的makefile所在目录 -n 只打印要执行的命令...如果定义了这个变量,那么,make就会在当前目录找不到的情况下,到指定的目录中去找寻文件了。 VPATH = src:.....subdir 文件下还有一个 makefile 文件,这个文件是用来描述这个子目录文件的编译规则。...使用时只需要在最外层的目录中执行 make 命令,当命令执行到上述的规则时,程序会进入到子目录中执行 make。

    1.7K20

    第3阶段——内核启动分析之make menuconfig内核配置(2)

    ,和.config配置文件非常相似, 它被顶层Makefile包含,被子目录Makefile使用 ?.../drivers/net/ 子目录Makefile中添加DM9000文件到obj-$(CONFIG_DM9000)中,其中CONFIG_DM9000=y,所以编译进内核中. drivers/net/Makefile...auto.conf和autoconf.h这两个文件( 其中autoconf.h是供c源码使用(宏开关),而auto.conf被顶层Makefile包含,供子目录Makefile使用) 2.通过子目录Makefile...得出: 如果auto.conf中CONFIG_xxx=y,对应的源码文件会被Makefile编译进内核; 如果auto.conf中CONFIG_xxx=m,对应的源码文件会被Makefile编译成xxx.ko...模块文件 如果auto.conf中CONFIG_xxx=n,对应的源码文件不会被makefile编译; 接下来分析Makefile来找到内核编译过程,明白make uImage做了什么

    1.1K90

    第3阶段——内核启动分析之make menuconfig内核配置(2)

    ,和.config配置文件非常相似, 它被顶层Makefile包含,被子目录Makefile使用 ?.../drivers/net/ 子目录Makefile中添加DM9000文件到obj-$(CONFIG_DM9000)中,其中CONFIG_DM9000=y,所以编译进内核中. drivers/net/Makefile...auto.conf和autoconf.h这两个文件( 其中autoconf.h是供c源码使用(宏开关),而auto.conf被顶层Makefile包含,供子目录Makefile使用) 2.通过子目录Makefile...得出: 如果auto.conf中CONFIG_xxx=y,对应的源码文件会被Makefile编译进内核; 如果auto.conf中CONFIG_xxx=m,对应的源码文件会被Makefile编译成xxx.ko...模块文件 如果auto.conf中CONFIG_xxx=n,对应的源码文件不会被makefile编译; 接下来分析Makefile来找到内核编译过程,明白make uImage做了什么

    1.5K50

    Linux自动化构建-makeMakefile

    背景 会不会写makefile,从⼀个侧⾯说明了⼀个⼈是否具备完成⼤型⼯程的能⼒ ⼀个⼯程中的源⽂件不计数,其按类型、功能、模块分别放在若⼲个⽬录中,makefile定义了⼀系列的规则来指定,哪些⽂件需要先编译...那么: make会在当前⽬录下找名字叫“Makefile”或“makefile”的⽂件。...如果找到,它会找⽂件中的第⼀个⽬标⽂件(target),在上⾯的例⼦中,他会找到 myproc 这个⽂件,并把这个⽂件作为最终的⽬标⽂件。...这就是整个make的依赖性,make会⼀层⼜⼀层地去找⽂件的依赖关系,直到最终编译出第⼀个⽬标⽂件。...在找寻的过程中,如果出现错误,⽐如最后被依赖的⽂件找不到,那么make就会直接退出,并报错,⽽对于所定义的命令的错误,或是编译不成功,make根本不理。

    8110

    自动化构建-makeMakefile 【Linux基础开发工具】

    在一些大工程中,会把不同模块或不同功能的源文件放在不同的目录中,我们可以在每个目录中都写一个该目录的Makefile这有利于让我们的Makefile变的更加简洁,不至于把所有东西全部写在一个Makefile...列如在子目录subdir目录下有个Makefile文件,来指明这个目录下文件的编译规则。...在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。....c 替换 成为.o 形成⽬标⽂件列表 LFLAGS=-o # 链接选项 FLAGS=-c # 编译选项 RM=rm -f # 引⼊命令 $(BIN):$(OBJ) @$(CC) $(LFLAGS...) $@ $^ # $@:代表⽬标⽂件名。

    14110

    用python写makefile

    所以最近花了几个晚上了解makefile的编写规则。 开始的时候,我参照网上一些makefile的例子,写了一个初版的makefile。然而这个makefile在编译我的工程的时候报错。...2、不同的.o文件或不同的.cpp文件处于不同的目录下。 这时我找到两种解决方法: 1、就是用VPATH这个特殊变量,但是我不可能将所有要包含的目录都一一手动包含进来,于是我放弃。...其实开始的时候我想用shell来做这一步工作的,但是我看到sed和awk,我头都晕,之前还一直抵触学习sed和awk。因此最后选择了python。...头文件包含路径 # @SYSLIBS 包含的系统库 # @LIBS 编译程序需要包含的库 # @CXX 一般填写gcc/g++ # @FLAGS gcc/g++的编译标志 # #...当然这个过程中会递归遍历所有子目录,查找到所有的源文件。

    6.3K40
    领券