是否在makefile中忽略了扩展名?

时间:2011-08-24 06:13:39

标签: c makefile

cube.c存储在文件夹多维数据集中。 makefile如下

LDFLAGS=-lglut -lGLU

all: cube

有人可以帮我解决以下问题吗?

  • cube表示cube.c?为什么cube没有广告.c

  • all: cube后面没有命令,并且未使用LDFLAGES。为什么可以用这种方式写出来?

2 个答案:

答案 0 :(得分:1)

cube是可执行文件本身。您的make可能有内置规则,用于将.c文件编译为.o文件(使用CFLAGS)以及链接单个.o文件(使用{ {1}})到可执行文件。因此,您所要做的就是提供LDFLAGS并为LDFLAGS提供至少一个目标,该目标通常称为make

如果您明确写出all可以推断出的规则,您可能会遇到以下情况:

make

GNU Make手册有一个关于其隐含规则的部分:

  

http://www.gnu.org/s/hello/manual/make/Implicit-Rules.html

答案 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