分享

unp building problem

 just_person 2012-09-11

my OS: fc11
need: unpv12e.tar.gz, download

tar -zxvf unpv12e.tar.gz

then follow the 'README' file to build.

problem 1: (libgai building problem)
cd libgai/ && make

gcc -g -O2 -D_REENTRANT -Wall   -c -o getaddrinfo.o getaddrinfo.c
In file included from gai_hdr.h:2,
                 from getaddrinfo.c:3:
unp.h:114: error: redefinition of ‘struct in_pktinfo’
getaddrinfo.c: In function ‘getaddrinfo’:
getaddrinfo.c:58: error: ‘EAI_ADDRFAMILY’ undeclared (first use in this function)
getaddrinfo.c:58: error: (Each undeclared identifier is reported only once
getaddrinfo.c:58: error: for each function it appears in.)
getaddrinfo.c:116: error: ‘EAI_NODATA’ undeclared (first use in this function)
make: *** [getaddrinfo.o] Error 1

solution of problem 1:
vi unp.h and comment out the following lines:
//struct in_pktinfo {
//  struct in_addr      ipi_addr;       /* dst IPv4 address */
//  int                         ipi_ifindex;/* received interface index */
//};

go to the unpv12e dir: cd ..
vi configure.in
comment out:
LIBGAI_OBJS="getaddrinfo.o getnameinfo.o freeaddrinfo.o gai_strerror.o"
and add the following lines:

  1. LIBGAI_OBJS=
  2. if test "$ac_cv_func_getaddrinfo" = no ; then
  3. LIBGAI_OBJS="$LIBGAI_OBJS getaddrinfo.o"
  4. fi
  5. if test "$ac_cv_func_getnameinfo" = no ; then
  6. LIBGAI_OBJS="$LIBGAI_OBJS getnameinfo.o"
  7. fi
  8. if test "$ac_cv_func_freeaddrinfo" = no ; then
  9. LIBGAI_OBJS="$LIBGAI_OBJS freeaddrinfo.o"
  10. fi
  11. if test "$ac_cv_func_gai_strerror" = no ; then
  12. LIBGAI_OBJS="$LIBGAI_OBJS gai_strerror.o"
  13. fi
autoconf
./configure
vi Make.defines
and add '-D_GNU_SOURCE' at the end of 'CFLAGS' as follow:

CFLAGS = -g -O2 -D_REENTRANT -Wall -D_GNU_SOURCE
cd libgai/ && make 
[OK]


problem 2: (libroute building problem)
cd unpv12e/libroute && make:
gcc -g -O2 -D_REENTRANT -Wall   -c -o get_rtaddrs.o get_rtaddrs.c
In file included from get_rtaddrs.c:1:
unproute.h:3:45: error: net/if_dl.h: No such file or directory
get_rtaddrs.c: In function ‘get_rtaddrs’:
get_rtaddrs.c:21: error: ‘RTAX_MAX’ undeclared (first use in this function)
get_rtaddrs.c:21: error: (Each undeclared identifier is reported only once
get_rtaddrs.c:21: error: for each function it appears in.)
get_rtaddrs.c:24: error: ‘struct sockaddr’ has no member named ‘sa_len’
get_rtaddrs.c:24: error: ‘struct sockaddr’ has no member named ‘sa_len’
get_rtaddrs.c:24: error: ‘struct sockaddr’ has no member named ‘sa_len’
get_rtaddrs.c:24: error: ‘struct sockaddr’ has no member named ‘sa_len’
make: *** [get_rtaddrs.o] Error 1


solution of problem 2:
download file 'if_dl.h' here.
put file 'if_dl.h' in /usr/include/net/
edit the file 'unproute.h' and add "
#define RTAX_MAX 1024"
vi /usr/include/linux/socket.h
struct sockaddr {
        sa_family_t     sa_family;      /* address family, AF_xxx       */
        char            sa_data[14];    /* 14 bytes of protocol address */
        unsigned char   sa_len;        
};

**********************problem 2 leaves open**********************

problem 3:
cd unpv12e/intro
make daytimetcpsrvv6

unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'

solution of problem 3:
delete 'extern' in file daytimetcpsrvv6.c as follow:
  extern
struct in6_addr ipv6addr_any;
->       
struct in6_addr ipv6addr_any;  [OK]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多