On 23-Feb-2010, Bruno Haible wrote: | John W. Eaton wrote: | > ../libgnu/stdio.h:1087: error: previous declaration of 'int _gl_cxxalias_dummy' with 'C++' linkage | > ../libgnu/signal.h:246: error: conflicts with new declaration with 'C' linkage | | Thanks for reporting this. I'll handle it through the patch below. | | But this error also means that you are including <signal.h> within an | 'extern "C"'. Which is fishy and may cause trouble elsewhere. | | Other than that, no problems? (I'll also write a unit test for this, but | it's more interesting to hear about your success or not.)
I think I misunderstood how to enable the namespace (I should have read the new documentation more carefully). After adding #define GNULIB_NAMESPACE gnulib to Octave's config.h file, I first saw this error: libtool: compile: g++ -DHAVE_CONFIG_H -I. -I/home/jwe/src/octave/liboctave -I.. -I../libgnu -I/home/jwe/src/octave/libgnu -I/home/jwe/src/octave/libcruft/misc -ggdb3 -DHAVE_CONFIG_H -I/usr/include/freetype2 -Wall -W -Wshadow -Wold-style-cast -Wformat -ggdb3 -pthread -ggdb3 -MT liboctave_la-CollocWt.lo -MD -MP -MF .deps/liboctave_la-CollocWt.Tpo -c /home/jwe/src/octave/liboctave/CollocWt.cc -fPIC -DPIC -o .libs/liboctave_la-CollocWt.o In file included from /usr/include/c++/4.4/cstring:45, from /home/jwe/src/octave/liboctave/oct-mem.h:27, from /home/jwe/src/octave/liboctave/idx-vector.h:37, from /home/jwe/src/octave/liboctave/Array.h:36, from /home/jwe/src/octave/liboctave/Array2.h:32, from /home/jwe/src/octave/liboctave/MArray2.h:28, from /home/jwe/src/octave/liboctave/dMatrix.h:27, from /home/jwe/src/octave/liboctave/CollocWt.h:29, from /home/jwe/src/octave/liboctave/CollocWt.cc:30: ../libgnu/string.h:223: error: no matches converting function 'memchr' to type 'void* (* const)(const void*, int, size_t)' /usr/include/string.h:74: error: candidates are: void* memchr(void*, int, size_t) /usr/include/string.h:76: error: const void* memchr(const void*, int, size_t) ../libgnu/string.h:292: error: no matches converting function 'memrchr' to type 'void* (* const)(const void*, int, size_t)' /usr/include/string.h:114: error: candidates are: void* memrchr(void*, int, size_t) /usr/include/string.h:116: error: const void* memrchr(const void*, int, size_t) I got past this problem by changing the declared return types for memchr and memrchr in gnulib/lib/string.in.h to be "const void *" instead of "void *". The next problem I encountered was libtool: compile: g++ -DHAVE_CONFIG_H -I. -I/home/jwe/src/octave/liboctave -I.. -I../libgnu -I/home/jwe/src/octave/libgnu -I/home/jwe/src/octave/libcruft/misc -ggdb3 -DHAVE_CONFIG_H -I/usr/include/freetype2 -Wall -W -Wshadow -Wold-style-cast -Wformat -ggdb3 -pthread -ggdb3 -MT liboctave_la-oct-glob.lo -MD -MP -MF .deps/liboctave_la-oct-glob.Tpo -c /home/jwe/src/octave/liboctave/oct-glob.cc -fPIC -DPIC -o .libs/liboctave_la-oct-glob.o In file included from /home/jwe/src/octave/liboctave/oct-glob.cc:31: ../libgnu/glob.h:215: internal compiler error: in start_decl, at cp/decl.c:4231 Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.4/README.Bugs> for instructions. I have not investigated any further. jwe