linux 下 怎么将多个不同文件里面的源代码 通过一个Makefile 生成可执行程序
如题,本人是linux新手,不知到怎么将多个文件里的源代码通过一个Makefile生成 可执行程序,请前辈们指教下,小弟 怎么编写makefile才好?? 写法很多啊……最简单的就一句:
all: a.c b.c c.c
gcc -o out $^
搞定
想稍微复杂点的:
all: $(addsuffix .o,$(basename $(wildcard *.c)))
gcc -o out $^
%.o: %.c
gcc $(CFLGAS) -c $<
注意命令的前面的4个空格其实是一个tab。 这个网上资料还是蛮多的了,稍微耐心看一下自己应该就能写出来了。
贴一个我写的供你参考。
#SRCFILE=$(wildcard *.c)
SRCFILE=$(shell find ./ -name "*.c")
OBJECTS=$(patsubst %.c,%.o,$(SRCFILE))
CROSS=arm-uclibc-linux-
CC =$(CROSS)gcc
LDIR := #your lib file dir:-L /usr/lib
LDIR += #your lib file dir
LIBS :=-lpthread
LIBS +=#your lib need to be linked :-lm
INCDIR :=#your include file dir :-I /usr/include
INCDIR +=#your include file dir
CC_FLAGS= -Wall -O3
CFG_CC :=#some gcc related define
CFG_LINK :=#link control define
all:$(OBJECTS)
@echo "<===================================================================================================>"
@echo "linking !!!!!!"
$(CC)$(LDIR) $(LIBS)$(OBJECTS)-o test.out
@echo "link sucess !!!!!"
$(OBJECTS):%.o:%.c
@echo "<====================================================================================================>"
@echo "compiling $<"
$(CC) $(CFG_CC) $(INCDIR)$(CC_FLAGS) -c $< -o $@
clean:
rm -f$(OBJECTS)
rm -f *.out 你可以用autoconf+automake,让它自动产生。《跟我一起写MAKEFILE》看看这个吧。 谢谢各位指教 我的今天写出来了,但做得有点老式。我的方法是在每一个功能模块文件里建一个makefile 然后在顶层的makefile里面
include 各个文件下的makefile,就是有点麻烦。我现在的水平也就这样了 有没有现成的工程模板可以借鉴的啊?
页:
[1]