build ACE under freebsd 7.0 之问题解决

本文针对ACE在FreeBSD 7.0中编译遇到的问题提供了详细的解决方案,包括添加必要的头文件、配置宏定义及手动定义缺失的数据结构等步骤。

不少人都尝试ACE在bsd下的build和开发,为了便于大家快速解决build时碰到的问题,
这里给出ACE 在 freebsd 7.0下build的 问题解决办法, 供大家参考。


1)../../ace/OS_NS_signal.inl: In function ‘int ACE_OS::pthread_sigmask(int, const sigset_t*, sigset_t*)’:
../../ace/OS_NS_signal.inl:31: error: ‘::pthread_sigmask’ has not been declared
解决办法:
打开ace/OS_NS_signal.inl,在头部添加
     #include <pthread.h>
     #include <signal.h>

 

2)/../ace/OS_NS_netdb.inl:189: error: cannot convert ‘int*’ to ‘hostent**’ for argument ‘7′ to ‘int gethostbyaddr_r(const void*, socklen_t, int, hostent*, char*, size_t, hostent**, int*)’

解决办法:
打开ace/config.h,在其中添加
#define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS

 

3)/../ace/Monitor_Control/BSD_Network_Interface_Monitor.cpp:87  has incomplete type
struct ifdatareq ifdr; memset (&ifdr, 0, sizeof (ifdr));

解决办法:freebsd的<net/if.h>并没有定义ifdatareq struct,在:87前面手工增加 struct:

struct ifdatareq {
                char ifdr_name[IFNAMSIZ];
                struct if_data ifdr_data;
        };

          struct ifdatareq ifdr;
          memset (&ifdr, 0, sizeof (ifdr));

 

前面2个问题的解决办法参考 http://www.sunchangming.com/blog/?p=234
第3个问题本人通过找到if.h的源文件解决,发现struct ifdatareq的定义遗漏了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值