2010-03-03 1 views
0

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

Не можете загрузить /usr/local/apache/modules/mod_mono.so в сервер: /usr/local/apache/modules/mod_mono.so: Неопределенный символ "strndup"

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

--libdir =/USR/Lib --includedir =/USR/включать

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

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

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

Я ценю любые советы, чтобы получить эту работу.

ответ

0

Добавить 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 
Смежные вопросы