我如何为此创建 Makefile

How do I create Makefile for this

这是我的头文件

#include <stdio.h>
#include <stdlib.h>
#include "gd.h"
#include "gdfontmb.h"
#include "gdfontl.h"
#include "gdfontg.h"

当我运行这个程序的时候我通常输入'gcc -o test test.o -lm -lpng -lgd' 它只适用于一个 .c 文件,但这只是为了测试。我想 link 这个与我项目中的其他 c 文件一起使用(实际上我真的很新 gd.h)

这是我的 Makefile(但它不起作用!!)

ifeq ($(OSTYPE),WINDOWS)
    EXECEXT =.exe
    COMP    =__MINGCC__
    PLATFORM    =mingw
else
    EXECEXT =
    COMP    =__GCC__
    PLATFORM    =linux
endif

EXECUTABLES= test$(EXECEXT)

all : $(EXECUTABLES)

test.o :   test.c
    gcc -c test.c

test$(EXECEXT) : test.o
    gcc -o test$(EXECEXT) test.o -lm -lpng -gd

clean : 
    -rm *.o
    -rm $(EXECUTABLES) 

使用这个 Makefile,我得到了关于 gd 库中任何内容的未定义引用的所有错误。 我做错了什么,我该如何解决?

你自己的cc命令已经给出了答案。您需要 -lgd,而不是 -gd。

例如在开头设置:

LIBS=-lm -lpng -lgd
CC=gcc

(后者也可以是完整的OS依赖路径,然后CC应该是OS特定部分的一部分,并指定为完整路径)。

稍后将 gcc 行更改为

$(CC) -o test$(EXECEXT) test.o $(LIBS)

test.o 的规则(通常)并不是真正需要的,因为它是从 .c 文件生成 .o 文件的默认方式。