交叉编译make: *** 没有指明目标并且找不到 makefile。 停止
时间: 2023-08-15 16:03:35 浏览: 191
引用[1]:文章围绕makefile文件的编写方式,向读者讲述如何在ubuntu平台上用交叉编译链 arm-none-eabi- 编译出 STM32F4xx 系列 MCU 的执行文件。文章核心在于讲述 arm-none-eabi- 在 Makefile 中的应用过程,对比于嵌入式可视编译器 keil_v5 有什么共同点,编译思维是怎样的,并完成一个简单项目 STM32F4xx_LED-Makefile 的编译工作。[1]引用[2]:还有,我们把 STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\STM32F4xx_StdPeriph_Driver\src 里面的 .c 库文件缩减到需要用到的4个文件,那是因为如果把其他的文件添加进去,那么 Makefile 文件就因为要甄别需要用到的文件而变得十分复杂冗长,相比编写需要频繁修改的 Makefile 文件,增删几个文件就显得十分简单了。[2]引用[3]:ifneq ($(KERNELRELEASE),): KERNELRELEASE是在内核源码的顶层Makefile中定义的一个变量,在第一次读取执行此Makefile时,KERNELRELEASE没有被定义,所以make将读取执行else之后的内容。 如果make的目标是clean,直接执行clean操作,然后结束。 当make的目标为all时,-C (KDIR)指明跳转到内核源码目录下读取那里的Makefile; M=(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。 当从内核源码目录返回时,KERNELRELEASE已被定义,make将继续读取else之前的内容。else之前的内容为kbuild语法的语句,指明模块源码中各文件的依赖关系,以及要生成的目标模块名。[3]
问题:交叉编译make: *** 没有指明目标并且找不到 makefile。 停止
回答: 这个错误通常是由于没有指定目标和找不到Makefile文件导致的。在使用make命令时,需要指定要执行的目标,例如"make all"或"make clean"。如果没有指定目标,make命令会报错并停止执行。另外,如果当前目录下没有找到Makefile文件,也会导致这个错误。请确保在执行make命令时指定了正确的目标,并且当前目录下存在Makefile文件。
阅读全文