fengyuganyu 发表于 2010-9-13 22:15:06

linux 下 怎么将多个不同文件里面的源代码 通过一个Makefile 生成可执行程序

如题,本人是linux新手,不知到怎么将多个文件里的源代码通过一个Makefile生成 可执行程序,请前辈们指教下,小弟

fengyuganyu 发表于 2010-9-13 22:15:47

怎么编写makefile才好??

minux 发表于 2010-9-13 22:29:18

写法很多啊……
最简单的就一句:
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。

cheh 发表于 2010-9-13 22:29:48

这个网上资料还是蛮多的了,稍微耐心看一下自己应该就能写出来了。
贴一个我写的供你参考。
#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

xblandy 发表于 2010-9-14 08:47:58

你可以用autoconf+automake,让它自动产生。《跟我一起写MAKEFILE》看看这个吧。

fengyuganyu 发表于 2010-9-14 22:03:10

谢谢各位指教 我的今天写出来了,但做得有点老式。我的方法是在每一个功能模块文件里建一个makefile 然后在顶层的makefile里面
include 各个文件下的makefile,就是有点麻烦。我现在的水平也就这样了

ljt8015 发表于 2010-9-14 22:20:29

有没有现成的工程模板可以借鉴的啊?
页: [1]
查看完整版本: linux 下 怎么将多个不同文件里面的源代码 通过一个Makefile 生成可执行程序