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