Forums » Development »
[Solved] Lighttpd 1.4.60 make error typedef fdlog_st redefinition
Added by Agossi about 3 years ago
Cannot make the latest 1.4.60 lighttp.
used the following configure cmd:
./configure --with-openssl \
--without-libev \
--without-mysql \
--without-pgsql \
--without-dbi \
--without-sasl \
--without-ldap \
--without-pam \
--without-wolfssl \
--host=arm-none-linux-gnueabi CC=arm-linux-gnueabi-gcc RANLIB=arm-linux-gnueabi-ranlib STRIP=arm-linux-gnueabi-strip \
CFLAGS='-std=c99'
followd by make results in:
In file included from t/test_configfile.c:9:
./fdlog.h:13: error: redefinition of typedef ‘fdlog_st’
./base_decls.h:28: note: previous declaration of ‘fdlog_st’ was here
make3: * [Makefile:2616: t/test_configfile.o] Error 1
make2: [Makefile:1963: all] Error 2
make1: [Makefile:470: all-recursive] Error 1
make: * [Makefile:400: all] Error 2
Lighttpd 1.4.59 worked also the CFLAGS='-std=c99' was not necessary at all.
Please advise how to get it compiled.
Replies (2)
RE: Lighttpd 1.4.60 make error typedef fdlog_st redefinition - Added by Agossi about 3 years ago
fixed it by adding own header for inclusion my compiler does not allow c11 standard using typedef redefinitions, so this was at least a solution.
#ifndef INCLUDED_HELPER_H
#define INCLUDED_HELPER_H
#include "buffer.h"
typedef struct fdlog_st {
enum { FDLOG_FILE, FDLOG_FD, FDLOG_SYSLOG, FDLOG_PIPE } mode;
int fd;
buffer b;
const char *fn;
} fdlog_st;
#ifndef log_error_st
typedef struct fdlog_st log_error_st;
#endif
#endif
RE: Lighttpd 1.4.60 make error typedef fdlog_st redefinition - Added by gstrauss about 3 years ago
It looks to me as if the (ancient) compiler did not like the repeated typedef, and there is a much simpler solution.
--- a/src/fdlog.h +++ b/src/fdlog.h @@ -5,12 +5,12 @@ #include "base_decls.h" #include "buffer.h" -typedef struct fdlog_st { +struct fdlog_st { enum { FDLOG_FILE, FDLOG_FD, FDLOG_SYSLOG, FDLOG_PIPE } mode; int fd; buffer b; const char *fn; -} fdlog_st; +}; __attribute_cold__ __attribute_returns_nonnull__