Пользовательский плагин collectd не будет компилироваться

Я пытаюсь написать собственный плагин на C для collectd и не могу заставить его скомпилировать с collectd. Я пробовал этот урок и мог заставить плагин работать с системой сборки collectd.

Я также попытался сделать это только с помощью копии подключаемого модуля загрузки и попытался вручную скомпилировать c-файл, чтобы просто связать скомпилированную библиотеку (что-то вроде хакерского подхода). Но я все еще получаю ошибки.

Когда я бегу

gcc -I. -g -O -c load_copy.c -lcommon

Я получаю эту ошибку

daemon/common.h:308:2: error: #error "Don't know how to convert between host 
and network representation of doubles."
 #error                                                                         
\
  ^
daemon/common.h:336:23: warning: ‘struct passwd’ declared inside parameter list
            struct passwd **pwbufp);
                   ^
daemon/common.h:336:23: warning: its scope is only this definition or declaration, which is probably not what you want
load_copy.c: In function ‘load_read’:
load_copy.c:184:2: error: #error "No applicable input method."
 #error "No applicable input method."

как будто все еще есть ошибка компиляции. Кто-нибудь успешно написал плагин C для collectd? Какие-нибудь советы?

Это из common.h

#ifdef HAVE_LIBKSTAT
int get_kstat(kstat_t **ksp_ptr, char *module, int instance, char *name);
long long get_kstat_value(kstat_t *ksp, char *name);
#endif

#ifndef HAVE_HTONLL
unsigned long long ntohll(unsigned long long n);
unsigned long long htonll(unsigned long long n);
#endif

#if FP_LAYOUT_NEED_NOTHING
#define ntohd(d) (d)
#define htond(d) (d)
#elif FP_LAYOUT_NEED_ENDIANFLIP || FP_LAYOUT_NEED_INTSWAP
double ntohd(double d);
double htond(double d);
#else
#error                                                                         \
    "Don't know how to convert between host and network representation of 
doubles."
#endif

0 ответов

Другие вопросы по тегам