LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 889|回复: 5

kj501斑竹,帮我看看

[复制链接]
发表于 2003-5-22 11:03:21 | 显示全部楼层 |阅读模式
我刚开始安装tcpdump3.6.2的时候提示缺少libpacp.c
我就装了,之后我就重新按部就班的# ./configure
......
# make

#./configure
.......
# make
make:*** No rule to make target 'VERSION'need by 'version.c'.stop
这就是出错信息,我不知道为什么
我刚试了一下nmap3.0我也是同样的方法安装的就能执行
请你帮我看看,主要问题就是# make 之后的那个提示
发表于 2003-5-22 11:21:59 | 显示全部楼层
最新版是
TCPDUMP 3.7.2

http://www.tcpdump.org/


源程序的安装
  既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
  · 第一步 取得源程序 在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种    形式,一种是tar压缩包(tcpdump-3_4a5.tar.Z),另一种是rpm的分发包(tcpdump-3_4a5.src.rpm)。这两种     形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
     #tar xvfz tcpdump-3_4a5.tar.Z
    rpm的包可以使用如下命令安装:
     #rpm -ivh tcpdump-3_4a5.src.rpm
    这样就把tcpdump的源代码解压到/usr/src/redhat/SOURCES目录下.

  · 第二步 做好编译源程序前的准备活动
    在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件     。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpdump的    源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文    件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
      BINDEST = @sbindir@
      MANDEST = @mandir@
    第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man 帮助页的路径名,你可以修    改它们来满足系统的需求。

  · 第三步 编译源程序
    使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生    成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpdump的源程序。使用make     install命令安装编译好的tcpdump的二进制文件。
    总结一下就是:
      # tar xvfz tcpdump-3_4a5.tar.Z
      # vi Makefile.in
      # . /configure
      # make
      # make install

http://www.fanqiang.com/a5/b6/20010911/1500001274.html

发表于 2003-5-22 11:47:09 | 显示全部楼层
能不能把Makefile贴出来看看。
 楼主| 发表于 2003-5-23 10:46:18 | 显示全部楼层

软件安装,帮帮我吧!!谢谢

[root@localhost tcpdump-3.6.2]# ./configure
loading cache ./config.cache
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
checking for gcc... (cached) gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking gcc version... (cached) 2
checking for inline... (cached) inline
checking for __attribute__... (cached) yes
checking how to run the C preprocessor... (cached) gcc -E
checking for fcntl.h... (cached) yes
checking for rpc/rpcent.h... (cached) no
checking for netinet/if_ether.h... (cached) yes
checking whether time.h and sys/time.h may both be included... (cached) yes
checking Linux kernel version... (cached) 2
checking for smi.h... (cached) no
checking for smiInit in -lsmi... (cached) no
checking whether to enable libsmi... no
checking whether to enable ipv6... no
checking for inet_ntop... yes
checking for inet_pton... yes
checking for inet_aton... yes
checking if sockaddr struct has sa_len member... (cached) no
checking size of char... (cached) 1
checking size of short... (cached) 2
checking size of int... (cached) 4
checking size of long... (cached) 4
checking for addrinfo... (cached) yes
checking for NI_MAXSERV... (cached) yes
checking for NI_NAMEREQD... (cached) yes
checking for sockaddr_storage... (cached) yes
checking for INADDRSZ... (cached) yes
checking for IN6ADDRSZ... (cached) yes
checking for RES_USE_INET6... (cached) yes
checking for res_state_ext... (cached) no
checking for nsort in res_state... (cached) no
checking for vfprintf... (cached) yes
checking for strcasecmp... (cached) yes
checking for strlcat... (cached) no
checking for strlcpy... (cached) no
checking for ether_ntohost... (cached) yes
checking for setlinebuf... (cached) yes
checking for getipnodebyname... (cached) no
checking for getipnodebyaddr... (cached) no
checking for freeaddrinfo... (cached) yes
checking for vsnprintf... (cached) yes
checking for snprintf... (cached) yes
checking whether byte ordering is bigendian... (cached) no
checking for main in -ldnet... (cached) no
checking for main in -lrpc... (cached) no
checking for getrpcbynumber in -lnsl... (cached) yes
checking return type of signal handlers... (cached) void
checking for sigset... (cached) yes
checking for gethostbyname... (cached) yes
checking for socket... (cached) yes
checking for putmsg in -lstr... (cached) no
checking for local pcap library... ../libpcap-0.6.2/libpcap.a
checking for bpf_dump... (cached) yes
checking for u_int8_t using gcc... (cached) yes
checking for int16_t using gcc... (cached) yes
checking for u_int16_t using gcc... (cached) yes
checking for int32_t using gcc... (cached) yes
checking for u_int32_t using gcc... (cached) yes
checking if sockaddr struct has sa_len member... (cached) no
checking if unaligned accesses fail... (cached) no
checking for h_errno... (cached) yes
checking for SSLeay... /usr
checking for des_cbc_encrypt in -lcrypto... (cached) yes
checking for cast.h... (cached) yes
checking for buggy CAST128... no
checking for rc5.h... (cached) no
checking for a BSD compatible install... (cached) /usr/bin/install -c
creating ./config.status
creating Makefile
creating config.h
config.h is unchanged
[root@localhost tcpdump-3.6.2]# make
make: *** No rule to make target `VERSION', needed by `version.c'.  Stop.
[root@localhost tcpdump-3.6.2]# make install
make: `install' is up to date.

在之前我安装了libpcap-0.6.2

makefile内容:
# Generated automatically from Makefile.in by configure.
#  Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
#         The Regents of the University of California.  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that: (1) source code distributions
#  retain the above copyright notice and this paragraph in its entirety, (2)
#  distributions including binary code include the above copyright notice and
#  this paragraph in its entirety in the documentation or other materials
#  provided with the distribution, and (3) all advertising materials mentioning
#  features or use of this software display the following acknowledgement:
#  ``This product includes software developed by the University of California,
#  Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
#  the University nor the names of its contributors may be used to endorse
#  or promote products derived from this software without specific prior
#  written permission.
#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.244 2000/12/21 10:43:20 guy Exp $ (LBL)

#
# Various configurable paths (remember to edit Makefile.in, not Makefile)
#

# Top level hierarchy
prefix = /usr/local
exec_prefix = ${prefix}
# Pathname of directory to install the binary
sbindir = ${exec_prefix}/sbin
# Pathname of directory to install the man page
mandir = ${prefix}/man

# VPATH
srcdir = .

#
# You shouldn't need to edit anything below here.
#

CC = gcc
PROG = tcpdump
CCOPT = -O2
INCLS = -I. -I../libpcap-0.6.2  -I$(srcdir)/missing -I/usr/include -I/usr/include/openssl
DEFS = -DHAVE_CONFIG_H

# Standard CFLAGS
CFLAGS = $(CCOPT) $(DEFS) $(INCLS)

# Standard LDFLAGS
LDFLAGS = -L/usr/lib

# Standard LIBS
LIBS = -lcrypto ../libpcap-0.6.2/libpcap.a -lnsl

INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644

# Explicitly define compilation rule since SunOS 4's make doesn't like gcc.
# Also, gcc does not remove the .o before forking 'as', which can be a
# problem if you don't own the file but can write to the directory.
.c.o:
        @rm -f $@
        $(CC) $(CFLAGS) -c $(srcdir)/$*.c

CSRC =        tcpdump.c \
        print-arp.c print-atalk.c print-atm.c print-bootp.c \
        print-decnet.c print-domain.c print-dvmrp.c print-egp.c \
        print-ether.c print-fddi.c print-gre.c print-icmp.c print-igmp.c \
        print-igrp.c print-ip.c print-ipx.c print-isoclns.c print-krb.c \
        print-llc.c print-nfs.c print-ntp.c print-null.c print-ospf.c \
        print-pim.c print-ppp.c print-raw.c print-rip.c print-sl.c \
        print-snmp.c print-stp.c print-sunrpc.c print-tcp.c print-tftp.c \
        print-udp.c print-wb.c addrtoname.c gmt2local.c machdep.c \
        parsenfsfh.c util.c savestr.c setsignal.c \
        print-esp.c print-ah.c print-vjc.c print-isakmp.c print-chdlc.c \
        print-ipcomp.c print-mobile.c print-l2tp.c print-bgp.c print-rx.c \
        print-lane.c print-cip.c print-pppoe.c print-lcp.c \
        print-smb.c smbutil.c print-ascii.c print-telnet.c print-cnfp.c \
        print-vrrp.c print-cdp.c print-token.c print-bxxp.c print-timed.c \
        print-radius.c print-sll.c

LOCALSRC =
GENSRC = version.c
LIBOBJS =  strlcat.o strlcpy.o

SRC =        $(CSRC) $(GENSRC) $(LOCALSRC)

# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
# hack the extra indirection
OBJ =        $(CSRC:.c=.o) $(GENSRC:.c=.o) $(LOCALSRC:.c=.o) $(LIBOBJS)
HDR =   addrtoname.h appletalk.h bootp.h decnet.h \
        ethertype.h extract.h fddi.h gmt2local.h igrp.h interface.h \
        ipx.h llc.h machdep.h mib.h nfsfh.h nfsv2.h ntp.h ospf.h \
        savestr.c setsignal.h \
        gnuc.h ipsec_doi.h isakmp.h l2tp.h nameser.h \
        netbios.h oakley.h ospf6.h ppp.h route6d.h

TAGHDR = \
        /usr/include/arpa/tftp.h \
        /usr/include/net/if_arp.h \
        /usr/include/net/slip.h \
        /usr/include/netinet/if_ether.h \
        /usr/include/netinet/in.h \
        /usr/include/netinet/ip_icmp.h \
        /usr/include/netinet/tcp.h \
        /usr/include/netinet/udp.h \
        /usr/include/protocols/routed.h

TAGFILES = $(SRC) $(HDR) $(TAGHDR)

CLEANFILES = $(PROG) $(OBJ) $(GENSRC)

all: $(PROG)

$(PROG): $(OBJ) ../libpcap-0.6.2/libpcap.a
        @rm -f $@
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)

getnameinfo.o: $(srcdir)/missing/getnameinfo.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getnameinfo.c
getaddrinfo.o: $(srcdir)/missing/getaddrinfo.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getaddrinfo.c
inet_pton.o: $(srcdir)/missing/inet_pton.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_pton.c
inet_ntop.o: $(srcdir)/missing/inet_ntop.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_ntop.c
inet_aton.o: $(srcdir)/missing/inet_aton.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_aton.c
snprintf.o: $(srcdir)/missing/snprintf.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
strlcat.o: $(srcdir)/missing/strlcat.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c
strlcpy.o: $(srcdir)/missing/strlcpy.c
        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c

version.o: version.c
        $(CC) $(CFLAGS) -c version.c

version.c: $(srcdir)/VERSION
        @rm -f $@
        sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $@

install:
        [ -d $(DESTDIR)$(sbindir) ] || \
            (mkdir -p $(DESTDIR)$(sbindir); chmod 755 $(DESTDIR)$(sbindir))
        $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(sbindir)/$(PROG)
        [ -d $(DESTDIR)$(mandir)/man1 ] || \
            (mkdir -p $(DESTDIR)$(mandir)/man1; chmod 755 $(DESTDIR)$(mandir)/man1)
        $(INSTALL_DATA) $(srcdir)/$(PROG).1 $(DESTDIR)$(mandir)/man1/$(PROG).1

uninstall:
        rm -f $(DESTDIR)$(sbindir)/$(PROG)
        rm -f $(DESTDIR)$(mandir)/man1/$(PROG).1

lint: $(GENSRC)
        lint -hbxn $(SRC) | \
            grep -v 'struct/union .* never defined' | \
            grep -v 'possible pointer alignment problem'

clean:
        rm -f $(CLEANFILES)

distclean:
        rm -f $(CLEANFILES) Makefile config.cache config.log config.status \
            config.h gnuc.h os-proto.h stamp-h stamp-h.in

tags: $(TAGFILES)
        ctags -wtd $(TAGFILES)

tar:
        @cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \
            list="" ; tar="tar chf" ; \
            for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \
            echo \
            "rm -f ../$$name; ln -s $$dir ../$$name" ; \
             rm -f ../$$name; ln -s $$dir ../$$name ; \
            echo \
            "(cd .. ; $$tar - [lots of files]) | compress > /tmp/$$name.tar.Z" ; \
             (cd .. ; $$tar - $$list) | compress > /tmp/$$name.tar.Z ; \
            echo \
            "rm -f ../$$name" ; \
             rm -f ../$$name

depend: $(GENSRC)
        ${srcdir}/mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC)
发表于 2003-5-23 14:38:59 | 显示全部楼层
如果需要经常从网上下载源代码来编译,就要学会理解和修改Makefile。
你的问题是这样的:
首先,看看make时的错误提示,也就是这个:
[root@localhost tcpdump-3.6.2]# make
make: *** No rule to make target `VERSION', needed by `version.c'. Stop.
很明显,make没有在Makefile中找到生成version.c所需要的目标VERSION。那么,我们就看看Makefile中是怎么写的。先找到Makefile中的这三行,
version.c: $(srcdir)/VERSION
@rm -f $@
sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $@
从这里可以看出,生成version需要源代码目录下的VERSION文件,并经过sed处理成version.c。如果sed处理失败,没有生成version.c文件,则make 会根据依赖关系,去寻找生成目标VERSION的规则。当然在这个Makefile中是找不到的啦。这就是提示没有目标生成VERSION的原因。
我估计sed不能正常执行的原因,最大的可能是没有安装sed。你可以先执行sed命令看看。如果没有,就去找一个rpm装上。如果不想安装,就自己做一个version.c,文件内容只要一句话:
char version[] = "3.6.2";
把这句话保存为version.c放在tcpdump-3.6.2目录下,再继续执行make就行了。
tcpdump是字符界面,使用起来并不是很方便。我要截取数据包都是用ethereal,它是图形界面,用起来很方便。
 楼主| 发表于 2003-5-24 09:53:38 | 显示全部楼层

谢谢!!

谢谢kj5o1斑竹,谢谢你讲的这么明白,万分感谢,多多帮助我
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表