当前位置: 技术问答>linux和unix
Makefile的编写
来源: 互联网 发布时间:2016-03-06
本文导语: 请高手指教: 为什么在gcc的时候要加上include 和lib的东西?如: dcsn:dcsn.h gcc -g -c dcsmnm.c -I/usr/include/libxml2 -I/usr/include/.. #编译这个include 有什么用啊?included 的东东怎么也需要编译? testnm:testnm.o ...
请高手指教:
为什么在gcc的时候要加上include 和lib的东西?如:
dcsn:dcsn.h
gcc -g -c dcsmnm.c -I/usr/include/libxml2 -I/usr/include/.. #编译这个include 有什么用啊?included 的东东怎么也需要编译?
testnm:testnm.o
gcc -g testnm.o -o testnm -lpthread#为什么要编译这个lpthread 库?
为什么在gcc的时候要加上include 和lib的东西?如:
dcsn:dcsn.h
gcc -g -c dcsmnm.c -I/usr/include/libxml2 -I/usr/include/.. #编译这个include 有什么用啊?included 的东东怎么也需要编译?
testnm:testnm.o
gcc -g testnm.o -o testnm -lpthread#为什么要编译这个lpthread 库?
|
几年前俺还在linux下工作,现在全忘了,将以前俺blog里的一篇贴子转过来
其中参考了一些资料,不过有些忘了出处,下面是这些资料的信息,应该可以搜索到,向他们致谢。
[code=BatchFile]How to write a Makefile
GNU make 指南(Goerge Foot,翻译: 哈少)
GNU Make(Richard M. Stallman and Roland McGrath)
#############################################################################
# A general makefile for program.
# Created by mount0N (mount0N@yahoo.com) . 2002.10.12
#
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and program name.
# 3, make depend
# to set src dependency relation at first time and every time your change
# depend relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS = -D_DEBUG
CINCS = -I/usr/local/include
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
LDFLAGS = -pthread -L/usr/local/lib
PROGRAM =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CFLAGS) --
CTAGS = ctags
all: $(PROGRAM)
$(PROGRAM):$(OBJS)
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(PROGRAM) *.o tags core shar
回复人: mounTon(思考◎痛苦中) ( ) 信誉:100 2002-11-13 11:32:00 得分:0
#############################################################################
# A general makefile for static library.
# Created by mount0N(mount0N@yahoo.com). 2002.10.12
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and lib name.
# 3, make depend
# to set src dependency relation at first time and every time you change
# dependency relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS =
CINCS =
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
DESTLIB = libxxx.a
#LDFLAGS =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CPPFLAGS) --
ARFLAGS = cru
RUNLIB = ranlib
all: $(DESTLIB)
$(DESTLIB):$(OBJS)
$(AR) $(ARFLAGS) $@ $?
$(RUNLIB) $(DESTLIB)
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(DESTLIB) *.o tags core shar
#############################################################################
# A general makefile for dynamic library.
# Created by mount0N(mount0N@yahoo.com). 2002.10.12
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and lib name.
# 3, make depend
# to set src dependency relation at first time and every time you change
# dependency relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS = -D_DEBUG
CINCS = -I/usr/local/include
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
LDFLAGS = -pthread -L/usr/local/lib
DESTLIB =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CFLAGS) --
CFLAGS += -fPIC
CXXFLAGS += -fPIC
all: $(PROGRAM)
$(DESTLIB):$(OBJS)
$(CC) -shared -Wl,-soname,$(DESTLIB) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $^ -o $@
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(DESTLIB) *.o tags core shar
存在的问题:
depend需要makedepend 程序;
tags需要ctags程序,而且只有vim支持程序的tag;[/code]
其中参考了一些资料,不过有些忘了出处,下面是这些资料的信息,应该可以搜索到,向他们致谢。
[code=BatchFile]How to write a Makefile
GNU make 指南(Goerge Foot,翻译: 哈少)
GNU Make(Richard M. Stallman and Roland McGrath)
#############################################################################
# A general makefile for program.
# Created by mount0N (mount0N@yahoo.com) . 2002.10.12
#
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and program name.
# 3, make depend
# to set src dependency relation at first time and every time your change
# depend relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS = -D_DEBUG
CINCS = -I/usr/local/include
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
LDFLAGS = -pthread -L/usr/local/lib
PROGRAM =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CFLAGS) --
CTAGS = ctags
all: $(PROGRAM)
$(PROGRAM):$(OBJS)
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(PROGRAM) *.o tags core shar
回复人: mounTon(思考◎痛苦中) ( ) 信誉:100 2002-11-13 11:32:00 得分:0
#############################################################################
# A general makefile for static library.
# Created by mount0N(mount0N@yahoo.com). 2002.10.12
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and lib name.
# 3, make depend
# to set src dependency relation at first time and every time you change
# dependency relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS =
CINCS =
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
DESTLIB = libxxx.a
#LDFLAGS =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CPPFLAGS) --
ARFLAGS = cru
RUNLIB = ranlib
all: $(DESTLIB)
$(DESTLIB):$(OBJS)
$(AR) $(ARFLAGS) $@ $?
$(RUNLIB) $(DESTLIB)
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(DESTLIB) *.o tags core shar
#############################################################################
# A general makefile for dynamic library.
# Created by mount0N(mount0N@yahoo.com). 2002.10.12
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and lib name.
# 3, make depend
# to set src dependency relation at first time and every time you change
# dependency relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS = -D_DEBUG
CINCS = -I/usr/local/include
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
LDFLAGS = -pthread -L/usr/local/lib
DESTLIB =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CFLAGS) --
CFLAGS += -fPIC
CXXFLAGS += -fPIC
all: $(PROGRAM)
$(DESTLIB):$(OBJS)
$(CC) -shared -Wl,-soname,$(DESTLIB) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $^ -o $@
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(DESTLIB) *.o tags core shar
存在的问题:
depend需要makedepend 程序;
tags需要ctags程序,而且只有vim支持程序的tag;[/code]
|
-I/usr/include/libxml2 是指定引入头文件的路径,如果不加的话,会出现无法找到某些头文件的错误.
-lpthread 是加载共享库libpthread.so
-lpthread 是加载共享库libpthread.so