我如何为此创建 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 文件的默认方式。
这是我的头文件
#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 文件的默认方式。