执行./configure 报错没有权限
换为 bash ./configure
cd libfree后make报错
vi或vim 进入inet_ntop 添加 #define
cd libroute后make报错没有那个文件或目录
作者说是只有系统支持4.4 BSD风格的routing socket
Linux可以忽略
网上有说添加 if_dl.h到/usr/include/net文件可以make
我是CentOs7的版本 加入后还是报错
报错内容 :
get_rtaddrs.c:13:42: 错误:‘struct sockaddr’没有名为‘sa_len’的成员
附上if_dl.h
#ifndef __NET_IF_DL_H
#define __NET_IF_DL_H
#ifndef __SYS_W32API_H
//#include <sys/w32api.h> w32api 加上会报错
#endif
#ifndef __SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
struct sockaddr_dl {
u_char sdl_len;
u_char sdl_family;
u_int16_t sdl_index;
u_char sdl_type;
u_char sdl_nlen;
u_char sdl_alen;
u_char sdl_slen;
char sdl_data[12];
};
#define LLADDR(s) ((caddr_t)((s)->sdl_data + (s)->sdl_nlen))
__BEGIN_DECLS
W32_FUNC void link_addr (const char *,struct sockaddr_dl *);
W32_FUNC char * link_ntoa (const struct sockaddr_dl *);
_END_DECLS
#endif
加上大佬的if_dl.h
/*
- Copyright © 1990, 1993
- 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 the following conditions
- are met:
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- All advertising materials mentioning features or use of this software
- must display the following acknowledgement:
- This product includes software developed by the University of
- California, Berkeley 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 BY THE REGENTS AND CONTRIBUTORS >``AS IS’’ AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
- @(#)if_dl.h 8.1 (Berkeley) 6/10/93
- $FreeBSD: src/sys/net/if_dl.h,v 1.10 2000/03/01 02:46:25 archie Exp $
*/
#ifndef NET_IF_DL_H
#define NET_IF_DL_H
/*
- A Link-Level Sockaddr may specify the interface in one of two
- ways: either by means of a system-provided index number (computed
- anew and possibly differently on every reboot), or by a human-readable
- string such as “il0” (for managerial convenience).
- Census taking actions, such as something akin to SIOCGCONF would return
- both the index and the human name.
- High volume transactions (such as giving a link-level ``from’’ address
- in a recvfrom or recvmsg call) may be likely only to provide the indexed
- form, (which requires fewer copy operations and less space).
- The form and interpretation of the link-level address is purely a matter
- of convention between the device driver and its consumers; however, it is
- expected that all drivers for an interface of a given if_type will agree.
*/
/*
- Structure of a Link-Level sockaddr:
/
struct sockaddr_dl {
u_char sdl_len; / Total length of sockaddr /
u_char sdl_family; / AF_LINK /
u_short sdl_index; / if != 0, system given index for interface /
u_char sdl_type; / interface type /
u_char sdl_nlen; / interface name length, no trailing 0 reqd. /
u_char sdl_alen; / link level address length /
u_char sdl_slen; / link layer selector length /
char sdl_data[12]; / minimum work area, can be larger;
contains both if name and ll address /
u_short sdl_rcf; / source routing control /
u_short sdl_route[16]; / source routing information */
};
#define LLADDR(s) ((caddr_t)((s)->sdl_data + (s)->sdl_nlen))
#ifndef _KERNEL
#include <sys/cdefs.h>
__BEGIN_DECLS
void link_addr __P((const char *, struct sockaddr_dl *));
char *link_ntoa __P((const struct sockaddr_dl *));
__END_DECLS
#endif /* !_KERNEL */
#endif
执行./daytimetcpcli 127.0.0.1报错connect error: Connection refused
需要打开本地服务器的daytime 功能,操作过程如下:
在daytime-stream中把disable改成 no 的属性。
su
yum install xinetd
vim /etc/xinetd.d/daytime-stream
再重启xinetd即可
service xinetd restart
本文详细记录了在CentOs7环境下遇到的./configure权限及编译错误的解决方案,包括修改inet_ntop宏定义、添加if_dl.h头文件至/usr/include/net,以及开启本地服务器daytime功能的具体步骤。
2402

被折叠的 条评论
为什么被折叠?



