[elinks-users] renderer.c:1685: error: 'struct cache_entry' has no member named 'cache_mode' when compiling eLinks v0.11.3 in Debian (PowerPC)

Kalle Olavi Niemitalo kon at iki.fi
Sun Jul 1 14:25:51 PDT 2007


Phillip Pi <ant at zimage.com> writes:

> I still got errors. http://www.savefile.com/files/856384 for the zip
> file (included config.h and config.log after running make).

The build got past renderer.o, however, so I think the workaround
is valid for bug 936.  The new errors are:

|       [CC]   src/intl/gettext/loadmsgcat.o
| loadmsgcat.c: In function '_nl_load_domain':
| loadmsgcat.c:286: warning: implicit declaration of function 'mmap'
| loadmsgcat.c:286: error: 'PROT_READ' undeclared (first use in this function)
| loadmsgcat.c:286: error: (Each undeclared identifier is reported only once
| loadmsgcat.c:286: error: for each function it appears in.)
| loadmsgcat.c:287: error: 'MAP_PRIVATE' undeclared (first use in this function)
| loadmsgcat.c:328: warning: implicit declaration of function 'munmap'
| make[3]: *** [loadmsgcat.o] Error 1

There seem to be two bugs here.

(1) configure is failing to detect munmap():

| configure:20380: checking for munmap
| configure:20437: gcc -o conftest -g -O2 -Wall  -I/usr/include  -rdynamic -L/usr/lib conftest.c -lX11 -lssl -lcrypto -ldl  -lz -l
| /usr/bin/ld: cannot find -lX11
| collect2: ld returned 1 exit status
| configure:20443: $? = 1

An earlier part of configure has got the directories of X from
imake and added -lX11 to $LIBS, assuming that it would exist
because the directories are there:

| configure:19422: result: libraries /usr/lib, headers /usr/include

We should probably make the configure script explicitly check for
-lX11 rather than rely on the results of AC_PATH_X.  You may be
able to work around this bug with "configure --without-x".

(2) loadmsgcat.c doesn't recover from a missing HAVE_MUNMAP.
It seems that, if HAVE_MUNMAP is not defined (because the munmap
function does not exist), then src/intl/gettext/loadmsgcat.c
should also undefine HAVE_MMAP, and skip all uses of mmap().
However, the error messages you got point to a section of code
that is inside #ifdef HAVE_MMAP, and the fact that PROT_READ
was undefined indicates that <sys/mman.h> was not included.
Therefore, it seems that loadmsgcat.c first undefined HAVE_MMAP
because HAVE_MUNMAP was missing, but then something else defined
HAVE_MMAP again, before loadmsgcat.c checked it.

Specifically, src/intl/gettext/loadmsgcat.c includes src/elinks.h,
which includes src/osdep/types.h, which includes config.h, which
can define HAVE_MMAP again.

If you work around bug (1) with "configure --without-x", I think
you can ignore bug (2).  If that doesn't help for some reason,
try adding "#undef HAVE_MMAP" below the #include directives in
loadmsgcat.c.

I'll add these bugs to bugzilla.elinks.cz later this week.



More information about the elinks-users mailing list