cube.c
存储在文件夹多维数据集中。 makefile如下
LDFLAGS=-lglut -lGLU
all: cube
有人可以帮我解决以下问题吗?
cube
表示cube.c?为什么cube
没有广告.c
?
行all: cube
后面没有命令,并且未使用LDFLAGES
。为什么可以用这种方式写出来?
答案 0 :(得分:1)
cube
是可执行文件本身。您的make
可能有内置规则,用于将.c
文件编译为.o
文件(使用CFLAGS
)以及链接单个.o
文件(使用{ {1}})到可执行文件。因此,您所要做的就是提供LDFLAGS
并为LDFLAGS
提供至少一个目标,该目标通常称为make
。
如果您明确写出all
可以推断出的规则,您可能会遇到以下情况:
make
GNU Make手册有一个关于其隐含规则的部分:
答案 1 :(得分:1)
立方体意味着cube.c?为什么cube没有扩展名.c?
这是生成的可执行文件的名称。
行all:cube之后没有命令,而LDFLAGES不是 使用
LDFLAGS
用于隐式规则
n.o是从n.c自动生成的,其形式为
$(CC) $(CPPFLAGS) $(CFLAGS) -c
n通过运行链接器从n.o自动生成(通常为 通过C编译器调用ld)。使用的精确配方是
$(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS)
请参阅implicit rules。