电子书makefile分析

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值