Как исправить сборку для mod_mono, когда он не может найти strndup во FreeBSD? - PullRequest
0 голосов
/ 04 марта 2010

Я устанавливаю mod_mono с Apache 2 на FreeBSD и получаю следующую ошибку, когда Apache пытается загрузить модуль mod_mono.so.

Невозможно загрузить / usr / local / apache / modules / mod_monoв сервердругие модули уже работают.Я обнаружил, что на файл strndup ссылается в файле roken.h в / usr / include, и я попробовал следующие дополнения для настройки команды, но она не работает.

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

Я также пытался ...

- с моно-префиксом = / usr

Я делаюне знаю что попробовать дальше.Не похоже, что у mod_mono есть много опций сборки.Поскольку Mono и XSP успешно скомпилированы, мне просто нужен mod_mono для работы.

Я ценю любые советы, как это работает.

1 Ответ

0 голосов
/ 19 октября 2010

Добавьте 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
...