$@   --目标文件,
$^    --所有的依赖文件,
$<    --第一个依赖文件。
$?   --所有比目标新的依赖目标的集合。以空格分隔。

 

-Wl,-rpath --编译目标代码时指定的动态库搜索路径。

 

GCC四步曲
第一步:预处理
gcc -E hello.c -o hello.i
第二步:编译
gcc -S hello.i -o hello.s
第三步:汇编
gcc -c hello.s -o hello.o
第四步:链接
链接动态库和静态库

 

Makefile 简单例子:

#定义生成的目标文件
CPP = g++
FLAG += -g -Wall -std=c++11

LIB_PATH+=-L/usr/local/lib 
LIB_PATH+=-L/usr/local/lib/boost

EXTRA_LIBS=-lpthread -lboost_system

#定义目标文件
SRC=./src

SOURCE := $(wildcard $(SRC)/*.cpp) $(wildcard $(SRC)/common/*.cpp)
OBJS := $(patsubst %.cpp,%.o,$(SOURCE))

EXEC=CMS

all:    $(EXEC)
$(EXEC):$(OBJS)
  $(CPP) $(FLAG) -o $(EXEC) $(OBJS) $(EXTRA_LIBS) $(LIB_PATH)

######各文件的依赖关系
.cpp.o:
  $(CPP) $(FLAG) -c -o $@ $<

######定义依赖关系结束
clean:
  rm -f ${SRC}/*.o

#g++ -g -Wall -std=c++11 main.cpp epoll_server.cpp -c 
#g++ main.o epoll_server.o -o -L/usr/local/lib -L/usr/local/lib/boost -lpthread -lboost_system

 





相关文章: