不知不觉毕业五年了,以前学的linux基本都忘了,重新温习起来吧!
下面是自己写的makefile文件,供新手和自己回头时查阅
CC=gcc
EXE=c.out
CCC=g++
EEE=cc.out
INC=/home/malth/project/include/
LIB=/home/malth/project/lib/
#添加文件搜索路经
vpath=/home/malth/project/lib
#vpath %.h ~/project/include
OUT=main.o bubbling_sort.o thread.o share_memory.o
CFILE=main.c bubbling_sort.c thread.c share_memory.c
ctest:$(OUT)
@echo compiling start......
#命令前加 - 减号可以忽略命令执行错误的信息
#"@"符号可以隐藏命令,命令会执行但是不会显示命令本身
#调试发现用*.o文件做gcc -o 连接生成的可执行文件不能进行GDB调试顾增加了*.c文件直接生成供选择
# $(CC) $(OUT) -static $(LIB)slib.a -lpthread -o $(EXE)
$(CC) $(CFILE) -I$(INC) -static $(LIB)slib.a -lpthread -g -o $(EXE)
@echo compile successed!
# @-rm -f *.o
main.o:main.c
$(CC) -I$(INC) -c -g main.c
common.o:common.c
$(CC) -c -g common.c
thread.o:thread.c
$(CC) -c -g thread.c
bubbling_sort.o:bubbling_sort.c
$(CC) -c -g bubbling_sort.c
share_memory.o:share_memory.c
$(CC) -c -g share_memory.c
cctest:test.cc
-rm -f cc.out
$(CCC) -o $(EEE) test.cc
######################################################
#create the static library
slib:static_lib.o
ar -rcs slib.a static_lib.o
mv -f slib.a $(LIB)
static_lib.o:static_lib.c
$(CC) -c static_lib.c
######################################################
clean:
-rm -f $(EXE) $(EEE) *.o
ls
result=
result:=$(words hello world)
all:
@echo -n "result is : "
@echo $(result)
.PHONY:all