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

Makefile错误:没有生成"bin/functions.o“的规则,"build”需要它

Makefile错误:没有生成"bin/functions.o“的规则,"build”需要它。

这个错误是由于Makefile中缺少生成"bin/functions.o"的规则导致的。在Makefile中,"build"目标需要依赖"bin/functions.o"文件,但是没有找到生成该文件的规则。

要解决这个错误,我们需要在Makefile中添加生成"bin/functions.o"的规则。可以使用以下步骤来完成:

  1. 确保"bin/functions.o"文件的源代码存在,并且位于正确的位置。
  2. 打开Makefile,并找到"build"目标所在的位置。
  3. 在"build"目标的依赖列表中添加"bin/functions.o"。
  4. 在Makefile的末尾添加一个新的规则,用于生成"bin/functions.o"文件。规则的格式如下:
  5. 在Makefile的末尾添加一个新的规则,用于生成"bin/functions.o"文件。规则的格式如下:
  6. 这个规则指定了生成"bin/functions.o"文件的命令。在这个例子中,我们使用g++编译器将"src/functions.cpp"文件编译为"bin/functions.o"文件。
  7. 保存Makefile,并重新运行make命令。

通过以上步骤,我们添加了生成"bin/functions.o"的规则,解决了Makefile错误。现在,当运行"build"目标时,Makefile将会先生成"bin/functions.o"文件,然后继续执行"build"目标的命令。

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

相关·内容

  • Makefile入门

    # 一、Makefile简介 # 1、Makefile是什么 Makefile是一种用于自动化构建程序的工具,它提供了一系列规则来指定源代码文件之间的依赖关系,以及如何生成目标文件。...通过将整个项目分解为多个模块,并定义每个模块之间的依赖关系,当某个模块发生变化时,只需要重新编译该模块及其依赖的其他模块即可。这有助于减少手动操作和错误,并提高代码质量。...Makefile是一个文件,其中定义了一系列的规则来指定哪些文件需要先编译、哪些文件需要后编译、哪些文件需要重新编译等。...如果找到,Make会按照Makefile文件中的规则和指令,自动执行相应的命令来编译和链接源代码文件,生成可执行文件或库。...目标定义了生成的目标体,并指明生成目标体需要哪些依赖文件。 依赖(Dependency):依赖是指生成目标体所需的文件或另一个目标。它可以是一个或多个文件,也可以没有。

    14010

    CMake,大型项目采用的构建工具

    所以建议学习这两个工具之前,先学习一下Makefile的内容。不过在此声明,不要因为CMake的出现,就不学Makefile和autotools。他们三者没有最好的,而是应该看应用场合,然后再去选择。...跨平台,并可生成native编译配置文件,在Linux平台,生成makefile。在苹果平台,生成xcode。在Windows平台,生成MSVC的工程文件。 能够管理大型项目。...编译测试:首相执行命令cmake .命令,该命令会根据CMakeLists.txt的规则构建出Makefile,然后执行make命令,生成可执行程序,然后运行....说明 这个指令用于向终端输出用户定义的信息,它包含了三种类型: SEND_ERROR:产生错误,生成过程被跳过 STATUS:输出前缀为-的信息。...过程:创建目录build,然后在build目录下执行cmake,将构建的中间文件生成到build下,这样源文件就很干净。

    1.1K20

    Makefile

    make能自动化完成这些工作,是因为项目提供了一个Makefile文件,它负责告诉make,应该如何编译和链接程序。...Makefile由若干条规则(Rule)构成,每一条规则指出一个目标文件(Target),若干依赖文件(Prerequisites),以及生成目标文件的命令。...) 在这个Makefile中: BIN=code:变量 BIN 的值是 code,表示目标文件名。...所以该规则会使*.c从第一个开始,逐个编译为对应的.o文件。 小结:隐式规则让Makefile更简洁,很多情况下不需要显式定义规则。 使用变量 赋值形式 = 这种赋值在解析时是延迟展开的。...减少人工维护的错误:避免手动书写依赖关系带来的遗漏问题。 注意: 包含依赖文件时,如果依赖文件不存在,Makefile可能会报错。

    12410

    程序员C语言快速上手——工程篇(十三)

    C语言工程构建 shell脚本(bat脚本) Makefile 脚本 基本语法规则 补充说明 CMake工具 安装 简单示例 基础规则 外部构建 定义变量 内置变量 命令 指定构建环境 生成 Makefile...现在将命令行脚本改写为Makefile脚本,在源码目录下创建一个名为Makefile的文件(亦可以写作makefile),注意,它没有拓展名,编辑如下内容: # 编译一个main.exe 程序 main.exe...这里,如果我想生成MinGW开发环境的Makefile,则只需要加一个-G参数,来指定一个明确的编译环境,从而生成对应的构建脚本。...),继续处理 SEND_ERROR CMake错误,继续处理,但会跳过生成 FATAL_ERROR CMake错误,停止处理和生成 内置变量 在cmake中已经内置了一些变量,我们可以直接使用,也可使用...LIBRARY_OUTPUT_PATH 设置该变量可修改库文件生成路径 # build/bin/ SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin

    3.1K30

    可移植的 Makefile 教程

    构建(build)的最后产物(可执行程序,文档等等)位于树根。Makefile 指定了依赖树的内容,并且提供了 Shell 命令来从目标的 先决条件(prerequisite) 生成目标。 ?...规则也需要指定 Shell 命令,这些 Shell 命令会被用于从先决条件中生成目标。 如果你打算创建示例中的源文件,并调用 make, 你会发现它实际上已经知道了它该如何构建目标文件。...DESTDIR 是一个用于 staged build(分段式构建) 的宏,为了打包的需要,它会安装到一个伪根目录。与 PREFIX 不同,它实际上不会从这个目录下运行。...如果推断规则不存在,那么你就需要对每个规则重复同样的命令。对于大型项目,这太繁琐了,所以你可能想要有一些“配置”脚本,即使这些脚本是手写的,来为你生成这些重复的命令。...举个例子,下面是在源文件之外的构建,它一个调用 gcc 的依赖生成器的例子,而不是虚构的 input.c : $ gcc $CFLAGS -MM -MT '$(BUILD)/input.o' input.c

    1.4K10

    【openwrt】package介绍

    如果PKG_INSTALL:=1,但是源码的makefile中并没有提供install目标,会提示如下编译报错。...OpenWrt 的工作假设是每个Package Makefile只有一个源代码,但您可以根据需要使用源代码编译生成任意多个二进制文件。...└── src # 源码文件 │ ├── hello.c │ ├── makefile # 这个源码的编译规则,需要自行编写 │ └── world.c...文件非常重要,它的语法也比较特殊,在创建新的package时,Makefile文件尽量参考已有的package。...package Makefile和源码的makefile不是一回事,前者是定义Package的一些信息,后者是具体的编译规则,package Makefile的语法也比较灵活,大家可能要根据实际情况决定是否需要自定义某些参数

    7400

    golang搭配 makefile 真香!

    书归正传 golang内置了很多 go commands 可以帮助我们完成go每个阶段的开发工作,但是很多时候我们需要分享我们的代码给其他人,初次看到我们代码工程的人可能并不知道怎么让它跑起来。...装配上Makefile,我们仅仅敲4个字符 make即可,我们开发过程中,不同阶段需要干不同的事儿, 清理编译中间目标文件 跑测试case 检查测试覆盖率 执行代码检查 等等 Makefile的goal...help: @echo "make 格式化go代码 并编译生成二进制文件" @echo "make build 编译go代码生成二进制文件" @echo "make clean 清理中间目标文件"...来管理我们程序的构建,减少了大量输入、拼写错误,简化构建项目的难度。...真实线上环境配合CI/CD更佳,如果你还没有尝试使用Makefile,那真的可以试试。

    41110

    Python安装报错:”ModuleNotFoundError:No module named _ctypes“ 的解决方案

    如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,比较混乱。 例如我们执行如下命令: cd Python-3.7.1 ....3、make编译make install安装 ※如果有需要,会进行 make depend(一种makefile的规则,通过扫描一个目录下的所有C\C++ 代码,从而判断出文件之间的依赖关系,如a.cc...否则所有的文件都需要重新编译) 从Makefile中读取指令,根据makefile制定的规则,将c\c++文件编译成*.o文件,然后进一步生成可执行文件。...里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。.../configure  # 检查编译环境/相关库文件/配置参数,生成makefile make     # 对源代码进行编译,生成可执行文件 make install # 将生成的可执行文件安装到当前计算机中特点

    5.7K40

    Makefile教程

    语法规则如下: target:prerequisites command 其中,target为需要生成的目标,prerequisites为依赖项,command为make需要执行的命令(任意的Shell...3.Makefile内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1.显式规则。显式规则说明了,如何生成一个或多个的目标文件。...这是由Makefile的书写者明显指出要生成的文件,文件的依赖文件,生成的命令。 2.隐晦规则。...(3)Makefile的规则通配符%,用于规则描述,一般用于目标文件的生成。...原来这种是老式的“双后缀规则”,编译器会自动将Makefile所在目录的.cpp识别为源文件后缀,而.o识别为输出文件后缀。特别需要注意的是,后缀规则不允许任何依赖文件,但也不能没有命令。

    4.1K53

    python中modulenotfounderror_esxi安装报错

    如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,比较混乱。 例如我们执行如下命令: cd Python-3.7.1 ....3、make编译make install安装 ※如果有需要,会进行 make depend(一种makefile的规则,通过扫描一个目录下的所有C\C++ 代码,从而判断出文件之间的依赖关系,如a.cc...否则所有的文件都需要重新编译) 从Makefile中读取指令,根据makefile制定的规则,将c\c++文件编译成*.o文件,然后进一步生成可执行文件。...里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。.../configure  # 检查编译环境/相关库文件/配置参数,生成makefile make     # 对源代码进行编译,生成可执行文件 make install # 将生成的可执行文件安装到当前计算机中特点

    55930

    手把手教你写一个 Makefile 文件

    一、了解什么是 Makefile 一个大型工程中的源文件不计其数,各个功能或者模块分别放在不同的目录下,手动敲命令去编译就带来很大的麻烦,那么Makefile可以定义一系列的编译规则,哪些文件需要先编译...你需要指定函数的Object File。 三、编写一个简单的 Makefile 1. Makefile 的基本语法规则: 目标 ... : 依赖 ......根据上面的语法规则及编译链接过程编写一个Makefile文件 main:main.o openFile.o readFile.o writeFile.o # main生成所需要的.o文件 gcc...Makefile是通过对比时间戳,当我们生成中间文件或可执行文件之后,他们的创建时间肯定要比 .c文件最后修改的时间晚,如果某个 .c文件有新修改过,它的时间戳肯定会比原来生成中间文件或可执行文件的时间戳晚...) # 删除可执行文件main 在Makefile中,最终要生成可执行文件main我们把它叫做终极目标,其它所有的 .o 文件本身也是一个目标,也需要编译生成,工程里面许多的 .c 就会生成许多的

    1.6K10

    Makefile总结

    Makefile是一个规定了怎么去编译和链接程序的脚本文件,在执行make命令时会执行该文件,window环境下的IDE,如visual studio已经集成了该功能,不需要关心程序的编译规则,在linux.../build/obj/, $(OBJ)) 可对上边的Makefile再进行修改: CC=g++ BIN=helloworld SRC=$(wildcard *.cpp) OBJ=$(patsubst %...并没有执行删除操作。 这种情况可以使用伪目标来解决,可避免在makefile中定义的执行命令目标和当前目录下实际文件名冲突。 一旦定义为伪目标,make执行规则不会去查找隐含规则,同样也提高了效率。...clean: $(RM) $(OBJ) $(BIN) 嵌套执行 大型项目中所有的源代码不可能放到一个目录下,一般模块化的代码是分开的,有生成库的目录,有生成最终可执行文件的目录,有进行测试的目录等...,有时我们需要传递参数,两种方法: 方法一: 在上层Makefile中使用”export”关键字对要传递的变量进行声明。

    97510

    Golang深入浅出之-Go语言项目构建工具:Makefile与go build

    一、go build:简单高效的命令行构建1.1 基本用法go build命令可以直接编译Go源代码文件,生成可执行文件。默认情况下,生成的可执行文件名为源文件去掉.go后缀的结果。...GOOS=linux GOARCH=amd64 go build -o myapp-linux二、Makefile:定制化构建流程2.1 Makefile简介Makefile是一种基于规则的自动化构建工具...它特别适合处理多步骤的构建流程和跨平台编译。...解决:保持Makefile简洁,使用注释说明每条规则的目的。问题:跨平台编译配置不当。解决:在Makefile中定义变量,根据目标平台调整编译命令。BINARY=myappGOOS ?...Makefile在大型项目、复杂构建流程或需要跨平台编译时更为灵活和强大。四、总结无论是使用go build还是Makefile,关键在于选择最适合项目需求的构建方式。

    1.4K10

    make menuconfig执行流程分析

    如果一个规则没有命令或者依赖,并且它的目标不是一个存在的文件名。在执行此规则时,目标总会被认为是最新的。就是说:这个规则一旦被执行,make就认为它的目标已经被更新过。...FORCE被定义为一个伪目标,所以它作为依赖时总是被认为是最新的(比目标新),故有FORCE作为依赖的目标每次make时必然会重新生成,在这里FORCE伪目标的规则命令为空,故FORCE在Kbuild体系中...也就是说,__build目标的依赖dochecklxdialog是用来检查生成配置对话框所需的ncurses库是不是已经安装在本机了,如果没有安装,make过程会报错退出。...如果一个规则没有命令或者依赖,并且它的目标不是一个存在的文件名。在执行此规则时,目标总会被认为是最新的。就是说:这个规则一旦被执行,make就认为它的目标已经被更新过。...FORCE被定义为一个伪目标,所以它作为依赖时总是被认为是最新的(比目标新),故有FORCE作为依赖的目标每次make时必然会重新生成,在这里FORCE伪目标的规则命令为空,故FORCE在Kbuild体系中

    3.7K10

    【Linux必备工具】自动化构建工具makefile的使用详解

    它是一个工程文件的编译规则,它记录了原始码如何编译的详细信息、描述了整个工程的编译链接等规则。 Makefile 是 Linux 下用于管理文件依赖和编译顺序的一个重要工具。...那要如何通过 test.c去生成 test 呢❓ 此时就需要使用到下面的这句 gcc指令 gcc -o test test.c 它叫做 【依赖方法】 使用make命令生成可执行程序 make 等生成可执行程序后...如果第一行是一个空行,可能会导致 Make 工具不正确地解释 Makefile,从而产生意外的行为或错误。 2.2.2 目标 目标:指定了要生成的文件或要执行的操作名。...对于gcc的编译,我们都知道要生成一个可执行程序需要经过预处理、编译、汇编和连接,中间会产生.i,.o,.s文件。但是在上面的操作中都没有生成中间文件。...但是我们知道一件事:生成bin文件,就需要对应的.o文件。

    22410

    CC++项目构建指南:如何使用Makefile提高开发效率

    每个规则包括一个目标(target)、一个或多个依赖(dependencies)和一组命令(commands)。目标是我们想要生成的文件,依赖是生成目标所需要的文件,命令是生成目标的具体步骤。...一个简单的Makefile规则的语法如下: target: dependencies commands 其中,target是生成的目标文件名,dependencies是生成目标所需的文件名列表,...然后,定义了一个BIN变量表示最终生成的可执行文件名。最后,我们定义了两个规则来生成目标文件和可执行文件。...第一个规则使用模式匹配来生成目标文件,它表示将源代码目录下的.c文件和.cpp文件编译成.o文件并保存到目标文件目录中。 第二个规则用来生成可执行文件。...它依赖于所有的目标文件,并使用C++编译器链接这些目标文件生成最终的可执行文件。 --- 总结 使用Makefile可以自动化构建C/C++项目,让编译、链接和生成可执行文件变得更加方便和高效。

    43940

    Makefile基本用法

    名为GUNmakefile和Makefile的文件同时存在,则使用前者。 调用方法过程中,若前者不存在,则如下脚本给出了如何寻找后者是否存在所需要调用的方法,然后执行。...前两行等价,第三行的-include使make忽略不存在或无法重新生成且没有错误消息的makefile ? ? ?...管道命令 对要调用的规则施加特定的顺序,而不必强制更新目标,使用管道命令。 当执行此条规则,则首先需要执行先决条件的规则。然而当先决条件存在,不论是否被更改,都属于满足条件。...随后按原始顺序执行规则。 ? 通配符 *.o 匹配所有的.o文件, ? $?匹配修改过的文件 ? 赋值过程中没有被理解为通配符,而是认为就是*.o本身,需要使用wildcard和$进行声明。 ? ?...每个target.d文件的生成依赖于对应的target.c和*.h文件。当.d文件发生变化,则执行对应的make规则。 ?

    2.5K40

    使用sed和awk查找和替换字符串处理Makefile文件(三)

    在前文中演示了使用awk和sed命令正则查找和替换Makefile文件中的make clean操作规则:把-(RM) (ULT_BIN)和-(RM) (ULT_BIN)这两句写成一句-(RM) (ULT_BIN...) 1 具体功能需求 要实现的效果如果上图所示,左边表示之前的Makefile文件,右边是通过本次Shell脚本处理后的Makefile文件,红色部分就是需要点。...具体如下: 需求1: 之前这个Makefile脚本在生成多个可执行文件时会调用gen_excbin包,然后执行*.o的生成规则,但是由于它前面加了$(CURDIR)/变量,而%.cpp和.c前面没有加,...所以不会调用gen_depend包生成.d依赖文件了,而是按照默认隐含的gcc或者g++编译规则生成.o文件。...需求2: 每调用gen_excbin或者gen_libs包生成可执行文件或者库文件后(即 @和 @ 需求3: 替换掉原来的(bin).o为(CURDIR)/ 2 shell程序 下面的这份shell脚本比较简单

    29310
    领券