2016-04-23 4 views
0

Вот мой файл заголовкаКак создать Makefile для этого

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

Когда я запускаю эту программу, я обычно набираю «ССАГПЗ -o тест test.o -lm -lpng -lgd» Он отлично работает для только один .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. Что я сделал не так, и как я могу это исправить?

+1

Опубликовать реальную ошибку. «неопределенная ссылка на все» не помогает нам решить вашу проблему. – viraptor

+3

Мой хрустальный шар говорит мне, что '-gd' должен быть' -lgd' – WhozCraig

ответ

0

Ваша собственная команда cc уже дает ответ. Вам нужно -lgd, not -gd.

E.g. установить в начале:

LIBS=-lm -lpng -lgd 
CC=gcc 

(последний может быть в полном OS-зависимый пути, а, а затем ЦК должен быть частью определенной части операционной системы, а также быть определена как полный путь).

и изменить ССАГПЗ линию позже

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

И правило для test.o (обычно) на самом деле не нужно, так как это путь по умолчанию, чтобы сделать файл .o из файла .c ,