接上一篇,依旧出现的是SDL库问题,
经过反复查找,终于发现是由于Makefile的SDL引用问题,同时也说明了(一)中的问题:
SDL库不是使用的默认地址,因此必须要指定安装。
把整个Makefile拷贝如下,也方便后续的学习者
#find all .c file in src
SRC_DIR := src
SRC_FILE_TYPE = c
FIND_SRC_FILES = $(shell find $(SRC_DIR) -name "*.$(SRC_FILE_TYPE)")
SRC_FILES = $(notdir $(FIND_SRC_FILES) )
#obj
OBJ_FILES = $(SRC_FILES:.$(SRC_FILE_TYPE)=.o)
OBJ_DIR := obj
OBJS = $(addprefix $(OBJ_DIR)/,$(OBJ_FILES))
##libs
LIB_DIR := ../ffmpeg
LIB_SDL_DIR := ../SDL
LOCAL_LIBS :=-L$(LIB_DIR)/libavformat -lavformat \
-L$(LIB_DIR)/libavcodec -lavcodec \
-L$(LIB_DIR)/libavutil -lavutil \
-L$(LIB_DIR)/libswscale -lswscale \
-L$(LIB_SDL_DIR)/build/.lib -lSDL
SYS_LIBS :=-lpthread -lz -lm
#
##include
INCLUDE_PATH += -I../ffmpeg -I../SDL/include
#
#compile para
CC = gcc
CFLAGS = -Wall -g -c
LINK = gcc
LINK_FLAGS = -g -o
target = tutorial
.PHONY:all
all:tutorial
$(target):$(OBJS)
$(LINK) $(LINK_FLAGS) $@ $(OBJS) $(LOCAL_LIBS) $(SYS_LIBS) $(INCLUDE_PATH)
#compile source files into object files
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.$(SRC_FILE_TYPE)
$(CC) $(CFLAGS) $(INCLUDE_PATH) -c $< -o $@
.PHONY:clean
clean:
rm -rf obj/*.o
rm tutorial
.PHONY:debug # //µ÷ÊÔÓÃ
debug:
@echo OBJ_FILES:$(OBJ_FILES)
@echo OBJS:$(OBJS)
由于整个Makefile较长,只好不带颜色上在上面。
正确运行结果如上图