如何创建makefile来编译多个程序

时间:2014-10-19 19:05:47

标签: makefile gcc c

我在创建makefile时遇到了一些问题。我试图从终端编译一些文件,并为gcc找到正确的选项来执行此操作。 但是我在创建一个makefile来完成所有这些任务时遇到了一些麻烦。

这是我的命令。

gcc -c pstree.c -DHAVE_CONFIG_H -I.
gcc -o hello pstree.o -L/usr/lib/ -ltinfo

gcc -c fuser.c -DHAVE_CONFIG_H -I.
gcc -c -o libsignals.a signals.c
gcc -o hello fuser.o -L/usr/lib/ -L. -lsignals

gcc -c -o libsignals.a signals.c
gcc -o hello killall.o -L/usr/lib/ -L. -lsignals
gcc -c killall.c -DHAVE_CONFIG_H -I.

如何制作用于执行这些命令的Makefile?

1 个答案:

答案 0 :(得分:1)

killall: hello\ fuser.o
    gcc -c -o libsignals.a signals.c
    gcc -o hello killall.o -L/usr/lib/ -L. -lsignals
    gcc -c killall.c -DHAVE_CONFIG_H -I.


fuser: hello\ pstree.o
    gcc -c fuser.c -DHAVE_CONFIG_H -I.
    gcc -c -o libsignals.a signals.c
    gcc -o hello\ fuser.o -L/usr/lib/ -L. -lsignals

pstree: 
    gcc -c pstree.c -DHAVE_CONFIG_H -I.
    gcc  -o hello\ pstree.o -L/usr/lib/ -ltinfo

clean:
rm -rf *.o

我写得很脏你可以定义cc变量,例如:
CC = gcc
CFLAGS = -g -Wall -I.
LIBS = -L/usr/lib/ -lsignals
等等.....
我很脏......

注意:在每行打算之前,必须使用TAB,而不是空格。

用法:

make clean
make killall