У меня возникают проблемы при компиляции моей программы.Неопределенная ссылка на SDL_Freesurface
Во-первых, здесь Makefile, Я использую:
LFLAGS = `sdl-config --cflags` `sdl-config --libs` -lSDL -lSDL_image
CFLAGS = -I/usr/include/SDL
HFLAGS = main.h fisherman.h jdv.h
all: jdv
jdv: main.o fisherman.o jdv.o
gcc main.o fisherman.o jdv.o $(LFLAGS) -o jdv -g -Wall
main.o: main.c $(HFLAGS)
gcc -c main.c $(CFLAGS)
fisherman.o: fisherman.c $(HFLAGS)
gcc -c fisherman.c $(CFLAGS)
jdv.o: jdv.c $(HFLAGS)
gcc -c jdv.c $(CFLAGS)
clean:
rm -f *.o
Образец программы:
в main.h
extern SDL_Surface * event;
extern SDL_Surface * map;
в основной .c
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include "main.h"
void loadGame()
{
SDL_Surface * event = NULL;
SDL_Surface * map = NULL;
...
}
А вот выход:
make
gcc main.o fisherman.o jdv.o `sdl-config --cflags` `sdl-config --libs` -lSDL -lSDL_image -lSDL_mixer -o jdv -g -Wall
main.o: in « main »:
main.c:(.text+0x119): undefined reference to « event »
main.c:(.text+0x195): undefined reference to « event »
main.c:(.text+0x1d1): undefined reference to « map »
И он идет за ~ 75 ошибок, как это на другой переменной. Но все они связаны с глобальной переменной.
Я думаю, что это связано с проблемой связывания, но я не знаю, исходит ли это из моего файла makefile, или я не смог создать глобальную переменную. Почему это говорит мне об «неопределенной ссылке»? Спасибо.
EDIT: Я побежал СДЛ-конфигурации --libs -> Выход:
-L/usr/lib/x86_64-linux-gnu -lSDL
Можете ли вы просто запустить командную строку 'sdl-config -libs' и вставить нашput? – user902384