简体   繁体   中英

How do I create Makefile for this

Here is my header file

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

When I run this program I usually type 'gcc -o test test.o -lm -lpng -lgd' It works fine for only one .c file, but this is just for testing. I want to link this with others c file in my project (Actually I'm really new to use gd.h)

Here is my Makefile (but It isn't work!!)

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) 

Using this Makefile, I got all error about undefined reference to whatever that are in the gd library. What did I do wrong and How can I fix this?

Your own cc command already gives the answer. You need -lgd, not -gd.

Eg set in the start:

LIBS=-lm -lpng -lgd
CC=gcc

(the latter can be the full OS-dependent path as well, and then the CC should be part of the OS specific part, and be specified as a full path).

and change the gcc line later to

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

And the rule for test.o is (usually) not really needed, as it is a default way to make a .o file from a .c file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM