电子书makefile分析

来源:互联网 发布:ubuntu xorg 安装 编辑:程序博客网 时间:2024/06/05 08:01
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上虚拟终端中显示电子书要用到。


其他的比较简单,这里就不讲了。


0 0