您的位置:首页 > 其它

电子书makefile分析

2015-07-03 21:21 281 查看
CROSSCOMPILE :=

CFLAGS := -Wall -O2 -c

CFLAGS += -I$(PWD)/include -I/usr/include/freetype2

LDFLAGS := -lm -lfreetype

CC := $(CROSSCOMPILE)gcc

LD := $(CROSSCOMPILE)ld

OBJS := main.o \

display/disp_manager.o \

display/fb.o \

display/crt.o \

encoding/ascii.o \

encoding/utf-16be.o \

encoding/encoding_manager.o \

encoding/utf-8.o \

encoding/utf-16le.o \

draw/draw.o \

fonts/ascii.o \

fonts/gbk.o \

fonts/freetype.o \

fonts/fonts_manager.o \

fonts/font_8x16.o

all: $(OBJS)

$(CC) $(LDFLAGS) -o show_file $^ -lvga -lvgagl

clean:

rm -f show_file

rm -f $(OBJS)

%.o:%.c

$(CC) $(CFLAGS) -o $@ $<

注释:上面是源码,下面来分析:

1.CFLAGS变量中存放的是gcc 编译的选项 -Wall 表示提示警告 -O2 表示优化的等级,优化得到的程序比没优化的要小,执行速度可能也有所提高。-c 为进行预定义,编译,汇编三步但是不进行链接就已经结束,生成的都是目标文件.o文件。下一行补充的gcc 参数有:

Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/include等)外,同时还在路径xxx下搜索需要被引用的头文件。 所以你的

gcc -I. -I/usr/xxxxx 的意思是,同时还要再 . 目录(即 执行gcc的当前目录) 以及 /usr/xxxxx 目录下搜索头文件。


此处还要添加当前include目录下的.h文件 以及/usr/include/freetype2中矢量字体头文件。

2.LDFLAGS变量中添加的-lm表示添加数学库,-lfreetype表示添加freetype库

3.objs中存放的是所有的目标文件,注意最后一行的fonts/font_8x16.o文件

4.all为虚拟目标,目的是执行下面的编译指令,注意添加-lvga -lvgal这两个库文件,在PC上虚拟终端中显示电子书要用到。

其他的比较简单,这里就不讲了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: