- 论坛徽章:
- 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的定义遗漏了。 |
|