linux - UNP源码编译出错,不明所以
天蓬老师
天蓬老师 2017-04-17 11:20:12
[Linux讨论组]

系统:Ubuntu 12.10 GCC: gcc 4.7.2 Glibc:2.15

编译/unpv13e/lib/wrapsock.c时发生如下错误

gcc -Wall -c wrapsock.c -o wrapsock.o
wrapsock.c: 在函数‘Inet6rthspace’中: wrapsock.c:82:2: 警告: 隐式声明函数‘inet6rthspace’ [-Wimplicit-function-declaration]
wrapsock.c: 在函数‘Inet6rthinit’中: wrapsock.c:94:2: 警告: 隐式声明函数‘inet6rthinit’ [-Wimplicit-function-declaration]
wrapsock.c:94:6: 警告: 赋值时将整数赋给指针,未作类型转换 [默认启用]
wrapsock.c: 在函数‘Inet6rthadd’中: wrapsock.c:104:2: 警告: 隐式声明函数‘inet6rthadd’ [-Wimplicit-function-declaration]
wrapsock.c: 在函数‘Inet6rthreverse’中: wrapsock.c:111:2: 警告: 隐式声明函数‘inet6rthreverse’ [-Wimplicit-function-declaration]
wrapsock.c: 在函数‘Inet6rthsegments’中: wrapsock.c:120:2: 警告: 隐式声明函数‘inet6rthsegments’ [-Wimplicit-function-declaration]
wrapsock.c: 在函数‘Inet6rthgetaddr’中: wrapsock.c:132:2: 警告: 隐式声明函数‘inet6rthgetaddr’ [-Wimplicit-function-declaration]
wrapsock.c:132:6: 警告: 赋值时将整数赋给指针,未作类型转换 [默认启用]

可是在 unp.h中明确包含了了<netinet/in.h>
在netinet/in.h中找到如下
576 extern socklent inet6rthspace (int type, int __segments) __THROW;
577 extern void *inet6_rth_init (void *
bp, socklen
t bplen, int __type,
579 extern int inet6
rth_add (void *
bp, const struct in6_addr *addr) THROW;
580 extern int inet6rthreverse (
const void *in, void *out) THROW;
581 extern int inet6rthsegments (
const void *bp) __THROW;
582 extern struct in6addr *inet6rth_getaddr (
const void *__bp, int __index)

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
ringa_lee

netinet/in.h里,在定义ipv6相关function的prototype前,有个#ifdef __USE_GNU。而这个是由#ifdef _GNU_SOURCE控制的。所以你需要在unp.h里加入#define _GNU_SOURCE,就可以了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号