海阔天空lanpeng.blog.chinaunix.net
lanlovehua
全部博文(134)
linux-软件应用(0)
2022年(1)
2020年(7)
2018年(2)
2016年(5)
2015年(14)
2014年(21)
2013年(3)
2012年(1)
2011年(15)
2010年(30)
2009年(35)
lds33
koozool
恒华电子
water2oi
RHCE520
mallocya
wmyrzy
wb123456
cainiaoz
km康蒙92
zhangtin
KAKA55
qq526665
Bsolar
浪花小雨
gnsusn
分类: LINUX
2010-03-25 16:57:32
lanpeng@lanpeng-laptop:~/hello$ ls -l
总用量 24drwxr-xr-x 2 lanpeng lanpeng 4096 2010-04-17 20:06 bye-rw-r--r-- 1 lanpeng lanpeng 199 2010-04-17 19:48 config.mkdrwxr-xr-x 2 lanpeng lanpeng 4096 2010-04-17 20:06 hellodrwxr-xr-x 2 lanpeng lanpeng 4096 2010-04-17 19:43 includedrwxr-xr-x 2 lanpeng lanpeng 4096 2010-04-17 20:06 main-rw-r--r-- 1 lanpeng lanpeng 911 2010-04-17 20:05 Makefile
#编译器的定义 COMPILE := CC := $(COMPILE)gcc CFLAGS := -Wall -O2 -g CFLAGS += -I$(TOPDIR)/include export COMPILE CC CFLAGS #编译规则的定义 %.o : %.c $(CC) $(CFLAGS) -c -o $@ $<
TOPDIR := $(shell pwd) export TOPDIR ##################################################################################################### include $(TOPDIR)/config.mk ######################################################################################################## OBJS := $(addprefix main/, main.o) OBJS += $(addprefix hello/, hello.o world.o) OBJS += $(addprefix bye/, bye.o) #以上结果为 OBJS = main/main.o hello/hello.o hello/world.o bye/bye.o ########################################################################################################## ALL := myhello all: $(ALL) myhello:$(OBJS) $(CC) $(CFLAGS) -o $@ $(OBJS) $(OBJS): $(MAKE) -C $(dir $@) #$(dir main/main.o) 结果是main/ 。 即抽取文件的路径部分。这里开始调用各个子目录下的Makefile。 clean: $(MAKE) -C main/ clean $(MAKE) -C hello/ clean $(MAKE) -C bye/ clean rm -rf myhello
#include <hello.h> int main(int argc, char *argv[]) { hello_init(); world_init(); bye_init(); return 0; }
include $(TOPDIR)/config.mk OBJ := main.o all: $(OBJ) clean: rm -rf *.o
#include <hello.h> void hello_init() { printf("hello,"); }
#include <hello.h> void world_init() { printf("world!\n"); }
include $(TOPDIR)/config.mk OBJ := hello.o OBJ += world.o all : $(OBJ) clean: rm -fr *.o
#include <hello.h> void bye_init() { printf("bye bye!\n"); }
include $(TOPDIR)/config.mk OBJ := bye.o all: $(OBJ) clean : rm -fr *.o
#ifndef HELLO_H #define HELLO_H #include <stdio.h> void hello_init(); void world_init(); void bye_init(); #endif
上一篇:linux静态库和动态库分析
下一篇:串口在minicom下使用退格键的问题
登录 注册