在FreeBSD上找不到strndup时,如何修复mod_mono的构建?

在FreeBSD上找不到strndup时,如何修复mod_mono的构建?,mono,apache2,mod-mono,Mono,Apache2,Mod Mono,我正在FreeBSD上安装带有Apache2的mod_mono,当Apache尝试加载mod_mono.so模块时,我遇到以下错误 无法加载 /usr/local/apache/modules/mod_mono.so 进入服务器: /usr/local/apache/modules/mod_mono.so: 未定义符号strndup 我为Apache设置的前缀是/usr/local/Apache,我已经有了PHP和其他模块。我发现strndup在/usr/include中的roken.h中被引用

我正在FreeBSD上安装带有Apache2的mod_mono,当Apache尝试加载mod_mono.so模块时,我遇到以下错误

无法加载 /usr/local/apache/modules/mod_mono.so 进入服务器: /usr/local/apache/modules/mod_mono.so: 未定义符号strndup

我为Apache设置的前缀是/usr/local/Apache,我已经有了PHP和其他模块。我发现strndup在/usr/include中的roken.h中被引用,我尝试了以下添加内容来配置命令,但没有成功

-libdir=/usr/lib-includedir=/usr/include

我也试过

-使用mono前缀=/usr

我不知道下一步该怎么办。mod_mono似乎没有很多构建选项。由于Mono和XSP都成功构建,我只需要mod_Mono就可以了


我非常感谢您为实现此功能提供的任何提示。

通过实现它来添加strndup:

ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#if !_LIBC
# include "strndup.h"
#endif

#include <stdlib.h>
#include <string.h>

#if !_LIBC
# include "strnlen.h"
# ifndef __strnlen
#  define __strnlen strnlen
# endif
#endif

#undef __strndup
#if _LIBC
# undef strndup
#endif

#ifndef weak_alias
# define __strndup strndup
#endif

char *
__strndup (s, n)
     const char *s;
     size_t n;
{
  size_t len = __strnlen (s, n);
  char *new = malloc (len + 1);

  if (new == NULL)
    return NULL;

  new[len] = '\0';
  return memcpy (new, s, len);
}
#ifdef libc_hidden_def
libc_hidden_def (__strndup)
#endif
#ifdef weak_alias
weak_alias (__strndup, strndup)
#endif