您的位置:首页 > 产品设计 > UI/UE

build ACE under freebsd 7.0 之问题解决

2010-09-06 10:32 453 查看
不少人都尝试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的定义遗漏了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: