当前位置:  技术问答>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 库?

|
几年前俺还在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]

|
-I/usr/include/libxml2 是指定引入头文件的路径,如果不加的话,会出现无法找到某些头文件的错误.
-lpthread 是加载共享库libpthread.so

    
 
 

您可能感兴趣的文章:

  • 函数互相调用时Makefile编写
  • 我编写的Makefile文件怎么老是有错误那??
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • 请教Makefile文件编写
  • 想学编写内核和编makefile文件要看什么书
  • makefile文件的编写问题
  • 急求关于怎么编写makefile的资料???
  • 关于动态库的Makefile的编写
  • 如何编写Makefile,使得只编译改变的文件
  • cmake怎么编写才使Makefile是高试模式
  • 请教makefile文件编写问题
  • 编写一个makefile
  • 求教solaris下Makefile的编写
  • Makefile编写
  • 在编写MAKEFILE的时候,如何判断一个文件是否存在呢???
  • 求教有关makefile编写的问题 MYSRCS:%c=%o
  • makefile文件的编写
  • makefile编写问题
  • 编写内核模块程序的makefile文件make错误
  • Makefile编写疑问,需要这么麻烦吗?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3