首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么gcc在这个制作文件中被执行?

为什么gcc在这个制作文件中被执行?
EN

Stack Overflow用户
提问于 2014-01-21 09:26:50
回答 1查看 107关注 0票数 0

我有下面的makefile,当输入make时,我得到了以下输出。为什么gcc在这种情况下会被叫来?

代码语言:javascript
复制
nasm -felf ./source/multiboot.s
gcc   multiboot.o   -o multiboot
gcc: error: multiboot.o: No such file or directory
gcc: fatal error: no input files
compilation terminated.
make: *** [multiboot] Error 4

makefile:

代码语言:javascript
复制
CC=gcc
ASM=nasm
ASMFLAG=-felf
SOURCE=./source/

all: multiboot

multiboot.o: $(SOURCE)multiboot.s
    $(ASM) $(ASMFLAG) $(SOURCE)multiboot.s
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-21 09:34:08

"all“命令依赖于"multiboot",但是没有明确的规则来定义如何生成"multiboot”。在这种情况下,使用预定义的规则来理解,如果存在"$target.o“目标,则可以通过运行链接器(在本例中为GCC)从"$target.o”构造"$target“。

在这种情况下,问题似乎是,您对"multiboot.o“命令的指令实际上并没有将文件"multiboot.o”作为输出。试着简单地做:

代码语言:javascript
复制
 multiboot.o: multiboot.s

(也就是说,不指定要运行的命令)。通过类似的机制,只要声明这个依赖项,就会产生一个隐式规则/命令来创建来自"multiboot.s“的"multiboot.o”输出。

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

https://stackoverflow.com/questions/21253978

复制
相关文章

相似问题

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