Hi, I've had Inline::CPP-0.25 on my (mandrake) linux box for quite some time ... not exactly sure when I built it, but it would have been built prior to 5.8.8 (which I'm now running).
To my surprise, I find that it's *not* working under perl 5.8.8. Afaik, I've not updated gcc/g++. Here's what I get when I now try to build Inline-CPP-0.25: Running 'perl Makefile.PL': ------------------------------------ This will configure and build Inline::C++. What default C++ compiler would you like to use? [g++] What default libraries would you like to include? [-lstdc++] Checking if your kit is complete... Looks good Writing Makefile for Inline::CPP::grammar Writing Makefile for Inline::CPP ------------------------------------ Running 'make test': ------------------------------------ cp CPP.pm blib/lib/Inline/CPP.pm cp lib/Inline/CPP.pod blib/lib/Inline/CPP.pod make[1]: Entering directory `/home/rob/perlmods/Inline-CPP-0.25/grammar' cp grammar.pm ../blib/lib/Inline/CPP/grammar.pm make[1]: Leaving directory `/home/rob/perlmods/Inline-CPP-0.25/grammar' PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/01basic.....make[1]: Entering directory `/home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_01basic_t_5cd2' /usr/local/bin/perl /usr/local/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/local/lib/perl5/5.8.8/ExtUtils/typemap -typemap /home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_01basic_t_5cd2/CPP.map _01basic_t_5cd2.xs > _01basic_t_5cd2.xsc && mv _01basic_t_5cd2.xsc _01basic_t_5cd2.c g++ -c -I/home/rob/perlmods/Inline-CPP-0.25/t -fno-strict-aliasing -pipe -I /usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSIO N=\"0.00\" -DXS_VERSION=\"0.00\" -fpic "-I/usr/local/lib/perl5/5.8.8/i686-linux/CORE" _01basic_t_5cd2.c In file included from /usr/include/c++/3.2.2/backward/iostream.h:31, from _01basic_t_5cd2.xs:2: /usr/include/c++/3.2.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated. _01basic_t_5cd2.c:60: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_new(...)': _01basic_t_5cd2.c:61: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_new(...)': _01basic_t_5cd2.c:61: redefinition of `void XS_main__Soldier_new(...)' _01basic_t_5cd2.c:60: `void XS_main__Soldier_new(...)' previously defined here _01basic_t_5cd2.c:61: redefinition of `void XS_main__Soldier_new(...)' _01basic_t_5cd2.c:60: `void XS_main__Soldier_new(...)' previously defined here _01basic_t_5cd2.c:63: `sp' undeclared (first use this function) _01basic_t_5cd2.c:63: (Each undeclared identifier is reported only once for each function it appears in.) _01basic_t_5cd2.c:64: parse error before `if' _01basic_t_5cd2.c:73: ISO C++ forbids declaration of `RETVAL' with no type _01basic_t_5cd2.c:73: conflicting types for `int RETVAL' _01basic_t_5cd2.c:71: previous declaration as `Soldier*RETVAL' _01basic_t_5cd2.c:73: `name' undeclared (first use this function) _01basic_t_5cd2.c:74: ISO C++ forbids declaration of `PL_stack_base' with no type _01basic_t_5cd2.c:74: variable-size type declared outside of any function _01basic_t_5cd2.c:74: type mismatch with previous external decl /usr/local/lib/perl5/5.8.8/i686-linux/CORE/thrdvar.h:42: previous external decl of `SV**PL_stack_base' _01basic_t_5cd2.c:74: invalid initializer _01basic_t_5cd2.c:75: ISO C++ forbids declaration of `Perl_sv_setref_pv' with no type _01basic_t_5cd2.c:75: `int Perl_sv_setref_pv' redeclared as different kind of symbol /usr/local/lib/perl5/5.8.8/i686-linux/CORE/proto.h:1229: previous declaration of `SV* Perl_sv_setref_pv(SV*, const char*, void*)' _01basic_t_5cd2.c:75: initializer list being treated as compound expression _01basic_t_5cd2.c:75: invalid conversion from `void*' to `int' _01basic_t_5cd2.c:77: parse error before `}' token _01basic_t_5cd2.c:78: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:78: type mismatch with previous external decl /usr/local/lib/perl5/5.8.8/i686-linux/CORE/thrdvar.h:34: previous external decl of `SV**PL_stack_sp' _01basic_t_5cd2.c:78: `tmpXSoff' undeclared (first use this function) _01basic_t_5cd2.c:78: parse error before `return' _01basic_t_5cd2.c:82: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_get_name(...)': _01basic_t_5cd2.c:83: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_get_name(...)': _01basic_t_5cd2.c:83: redefinition of `void XS_main__Soldier_get_name(...)' _01basic_t_5cd2.c:82: `void XS_main__Soldier_get_name(...)' previously defined here _01basic_t_5cd2.c:83: redefinition of `void XS_main__Soldier_get_name(...)' _01basic_t_5cd2.c:82: `void XS_main__Soldier_get_name(...)' previously defined here _01basic_t_5cd2.c:85: redefinition of `I32 ax' _01basic_t_5cd2.c:63: `I32 ax' previously defined here _01basic_t_5cd2.c:85: redefinition of `SV**mark' _01basic_t_5cd2.c:63: `SV**mark' previously defined here _01basic_t_5cd2.c:85: cannot convert `int*' to `SV**' in initialization _01basic_t_5cd2.c:85: redefinition of `I32 items' _01basic_t_5cd2.c:63: `I32 items' previously defined here _01basic_t_5cd2.c:86: parse error before `if' _01basic_t_5cd2.c:90: type mismatch with previous external decl _01basic_t_5cd2.c:73: previous external decl of `int RETVAL' _01basic_t_5cd2.c:93: parse error before `if' _01basic_t_5cd2.c:98: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:98: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:78: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:98: parse error before `return' _01basic_t_5cd2.c:101: ISO C++ forbids declaration of `RETVAL' with no type _01basic_t_5cd2.c:101: conflicting types for `int RETVAL' _01basic_t_5cd2.c:90: previous declaration as `char*RETVAL' _01basic_t_5cd2.c:101: `THIS' undeclared (first use this function) _01basic_t_5cd2.c:102: ISO C++ forbids declaration of `Perl_sv_setpv' with no type _01basic_t_5cd2.c:102: `int Perl_sv_setpv' redeclared as different kind of symbol /usr/local/lib/perl5/5.8.8/i686-linux/CORE/proto.h:1231: previous declaration of `void Perl_sv_setpv(SV*, const char*)' _01basic_t_5cd2.c:102: initializer list being treated as compound expression _01basic_t_5cd2.c:102: parse error before `=' token _01basic_t_5cd2.c:102: parse error before `++' token _01basic_t_5cd2.c:104: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:104: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:98: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:104: parse error before `return' _01basic_t_5cd2.c:108: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_get_rank(...)': _01basic_t_5cd2.c:109: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_get_rank(...)': _01basic_t_5cd2.c:109: redefinition of `void XS_main__Soldier_get_rank(...)' _01basic_t_5cd2.c:108: `void XS_main__Soldier_get_rank(...)' previously defined here _01basic_t_5cd2.c:109: redefinition of `void XS_main__Soldier_get_rank(...)' _01basic_t_5cd2.c:108: `void XS_main__Soldier_get_rank(...)' previously defined here _01basic_t_5cd2.c:111: redefinition of `I32 ax' _01basic_t_5cd2.c:85: `I32 ax' previously defined here _01basic_t_5cd2.c:111: redefinition of `SV**mark' _01basic_t_5cd2.c:85: `SV**mark' previously defined here _01basic_t_5cd2.c:111: cannot convert `int*' to `SV**' in initialization _01basic_t_5cd2.c:111: redefinition of `I32 items' _01basic_t_5cd2.c:85: `I32 items' previously defined here _01basic_t_5cd2.c:112: parse error before `if' _01basic_t_5cd2.c:116: type mismatch with previous external decl _01basic_t_5cd2.c:101: previous external decl of `int RETVAL' _01basic_t_5cd2.c:117: redefinition of `SV* const targ' _01basic_t_5cd2.c:91: `SV* const targ' previously defined here _01basic_t_5cd2.c:119: parse error before `if' _01basic_t_5cd2.c:124: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:124: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:104: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:124: parse error before `return' _01basic_t_5cd2.c:127: ISO C++ forbids declaration of `RETVAL' with no type _01basic_t_5cd2.c:127: conflicting types for `int RETVAL' _01basic_t_5cd2.c:116: previous declaration as `char*RETVAL' _01basic_t_5cd2.c:128: ISO C++ forbids declaration of `Perl_sv_setpv' with no type _01basic_t_5cd2.c:128: redefinition of `int Perl_sv_setpv' _01basic_t_5cd2.c:102: `int Perl_sv_setpv' previously defined here _01basic_t_5cd2.c:128: initializer list being treated as compound expression _01basic_t_5cd2.c:128: parse error before `=' token _01basic_t_5cd2.c:128: parse error before `++' token _01basic_t_5cd2.c:130: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:130: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:124: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:130: parse error before `return' _01basic_t_5cd2.c:134: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_get_serial(...)': _01basic_t_5cd2.c:135: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_get_serial(...)': _01basic_t_5cd2.c:135: redefinition of `void XS_main__Soldier_get_serial(...)' _01basic_t_5cd2.c:134: `void XS_main__Soldier_get_serial(...)' previously defined here _01basic_t_5cd2.c:135: redefinition of `void XS_main__Soldier_get_serial(...)' _01basic_t_5cd2.c:134: `void XS_main__Soldier_get_serial(...)' previously defined here _01basic_t_5cd2.c:137: redefinition of `I32 ax' _01basic_t_5cd2.c:111: `I32 ax' previously defined here _01basic_t_5cd2.c:137: redefinition of `SV**mark' _01basic_t_5cd2.c:111: `SV**mark' previously defined here _01basic_t_5cd2.c:137: cannot convert `int*' to `SV**' in initialization _01basic_t_5cd2.c:137: redefinition of `I32 items' _01basic_t_5cd2.c:111: `I32 items' previously defined here _01basic_t_5cd2.c:138: parse error before `if' _01basic_t_5cd2.c:142: redefinition of `int RETVAL' _01basic_t_5cd2.c:127: `int RETVAL' previously defined here _01basic_t_5cd2.c:143: redefinition of `SV* const targ' _01basic_t_5cd2.c:117: `SV* const targ' previously defined here _01basic_t_5cd2.c:145: parse error before `if' _01basic_t_5cd2.c:150: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:150: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:130: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:150: parse error before `return' _01basic_t_5cd2.c:153: ISO C++ forbids declaration of `RETVAL' with no type _01basic_t_5cd2.c:153: redefinition of `int RETVAL' _01basic_t_5cd2.c:142: `int RETVAL' previously declared here _01basic_t_5cd2.c:154: parse error before `=' token _01basic_t_5cd2.c:154: parse error before `++' token _01basic_t_5cd2.c:156: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:156: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:150: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:156: parse error before `return' _01basic_t_5cd2.c:160: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_DESTROY(...)': _01basic_t_5cd2.c:161: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void XS_main__Soldier_DESTROY(...)': _01basic_t_5cd2.c:161: redefinition of `void XS_main__Soldier_DESTROY(...)' _01basic_t_5cd2.c:160: `void XS_main__Soldier_DESTROY(...)' previously defined here _01basic_t_5cd2.c:161: redefinition of `void XS_main__Soldier_DESTROY(...)' _01basic_t_5cd2.c:160: `void XS_main__Soldier_DESTROY(...)' previously defined here _01basic_t_5cd2.c:163: redefinition of `I32 ax' _01basic_t_5cd2.c:137: `I32 ax' previously defined here _01basic_t_5cd2.c:163: redefinition of `SV**mark' _01basic_t_5cd2.c:137: `SV**mark' previously defined here _01basic_t_5cd2.c:163: cannot convert `int*' to `SV**' in initialization _01basic_t_5cd2.c:163: redefinition of `I32 items' _01basic_t_5cd2.c:137: `I32 items' previously defined here _01basic_t_5cd2.c:164: parse error before `if' _01basic_t_5cd2.c:174: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:174: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:156: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:174: parse error before `return' _01basic_t_5cd2.c:179: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:179: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:174: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:179: parse error before `return' _01basic_t_5cd2.c:185: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void boot__01basic_t_5cd2(...)': _01basic_t_5cd2.c:186: parse error before `__attribute__' _01basic_t_5cd2.c: In function `void boot__01basic_t_5cd2(...)': _01basic_t_5cd2.c:186: redefinition of `void boot__01basic_t_5cd2(...)' _01basic_t_5cd2.c:185: `void boot__01basic_t_5cd2(...)' previously defined here _01basic_t_5cd2.c:186: redefinition of `void boot__01basic_t_5cd2(...)' _01basic_t_5cd2.c:185: `void boot__01basic_t_5cd2(...)' previously defined here _01basic_t_5cd2.c:188: redefinition of `I32 ax' _01basic_t_5cd2.c:163: `I32 ax' previously defined here _01basic_t_5cd2.c:188: redefinition of `SV**mark' _01basic_t_5cd2.c:163: `SV**mark' previously defined here _01basic_t_5cd2.c:188: cannot convert `int*' to `SV**' in initialization _01basic_t_5cd2.c:188: redefinition of `I32 items' _01basic_t_5cd2.c:163: `I32 items' previously defined here _01basic_t_5cd2.c:191: parse error before `do' _01basic_t_5cd2.c:191: base operand of `->' is not a pointer _01basic_t_5cd2.c:191: base operand of `->' is not a pointer _01basic_t_5cd2.c:191: invalid conversion from `int' to `SV*' _01basic_t_5cd2.c:191: parse error before `if' _01basic_t_5cd2.c:193: ISO C++ forbids declaration of `Perl_newXS' with no type _01basic_t_5cd2.c:193: `int Perl_newXS' redeclared as different kind of symbol /usr/local/lib/perl5/5.8.8/i686-linux/CORE/proto.h:829: previous declaration of `CV* Perl_newXS(char*, void (*)(CV*), char*)' _01basic_t_5cd2.c:193: initializer list being treated as compound expression _01basic_t_5cd2.c:193: left-hand operand of comma cannot resolve address of overloaded function _01basic_t_5cd2.c:193: invalid conversion from `char*' to `int' _01basic_t_5cd2.c:194: ISO C++ forbids declaration of `Perl_newXS' with no type _01basic_t_5cd2.c:194: redefinition of `int Perl_newXS' _01basic_t_5cd2.c:193: `int Perl_newXS' previously defined here _01basic_t_5cd2.c:194: initializer list being treated as compound expression _01basic_t_5cd2.c:194: left-hand operand of comma cannot resolve address of overloaded function _01basic_t_5cd2.c:194: invalid conversion from `char*' to `int' _01basic_t_5cd2.c:195: ISO C++ forbids declaration of `Perl_newXS' with no type _01basic_t_5cd2.c:195: redefinition of `int Perl_newXS' _01basic_t_5cd2.c:194: `int Perl_newXS' previously defined here _01basic_t_5cd2.c:195: initializer list being treated as compound expression _01basic_t_5cd2.c:195: left-hand operand of comma cannot resolve address of overloaded function _01basic_t_5cd2.c:195: invalid conversion from `char*' to `int' _01basic_t_5cd2.c:196: ISO C++ forbids declaration of `Perl_newXS' with no type _01basic_t_5cd2.c:196: redefinition of `int Perl_newXS' _01basic_t_5cd2.c:195: `int Perl_newXS' previously defined here _01basic_t_5cd2.c:196: initializer list being treated as compound expression _01basic_t_5cd2.c:196: left-hand operand of comma cannot resolve address of overloaded function _01basic_t_5cd2.c:196: invalid conversion from `char*' to `int' _01basic_t_5cd2.c:197: ISO C++ forbids declaration of `Perl_newXS' with no type _01basic_t_5cd2.c:197: redefinition of `int Perl_newXS' _01basic_t_5cd2.c:196: `int Perl_newXS' previously defined here _01basic_t_5cd2.c:197: initializer list being treated as compound expression _01basic_t_5cd2.c:197: left-hand operand of comma cannot resolve address of overloaded function _01basic_t_5cd2.c:197: invalid conversion from `char*' to `int' _01basic_t_5cd2.c:198: parse error before `do' _01basic_t_5cd2.c:198: ISO C++ forbids declaration of `PL_stack_sp' with no type _01basic_t_5cd2.c:198: redefinition of `int PL_stack_sp' _01basic_t_5cd2.c:179: `int PL_stack_sp' previously defined here _01basic_t_5cd2.c:198: parse error before `return' /usr/include/c++/3.2.2/streambuf: In function `void __static_initialization_and_destruction_0(int, int)': _01basic_t_5cd2.c:63: register name not specified for `SV**mark' _01basic_t_5cd2.c: At top level: _01basic_t_5cd2.c:85: register name not specified for `SV**mark' _01basic_t_5cd2.c:111: register name not specified for `SV**mark' _01basic_t_5cd2.c:137: register name not specified for `SV**mark' _01basic_t_5cd2.c:163: register name not specified for `SV**mark' _01basic_t_5cd2.c:188: register name not specified for `SV**mark' {standard input}: Assembler messages: {standard input}:141: Error: symbol `ax' is already defined {standard input}:155: Error: symbol `ax' is already defined {standard input}:163: Error: symbol `Perl_sv_setpv' is already defined {standard input}:169: Error: symbol `ax' is already defined {standard input}:177: Error: symbol `ax' is already defined {standard input}:183: Error: symbol `ax' is already defined {standard input}:195: Error: symbol `Perl_newXS' is already defined {standard input}:201: Error: symbol `Perl_newXS' is already defined {standard input}:207: Error: symbol `Perl_newXS' is already defined {standard input}:213: Error: symbol `Perl_newXS' is already defined {standard input}:243: Error: symbol `mark' is already defined {standard input}:249: Error: symbol `items' is already defined {standard input}:255: Error: symbol `RETVAL' is already defined {standard input}:261: Error: symbol `PL_stack_sp' is already defined {standard input}:267: Error: symbol `PL_stack_sp' is already defined {standard input}:273: Error: symbol `mark' is already defined {standard input}:279: Error: symbol `items' is already defined {standard input}:285: Error: symbol `RETVAL' is already defined {standard input}:291: Error: symbol `PL_stack_sp' is already defined {standard input}:297: Error: symbol `PL_stack_sp' is already defined {standard input}:303: Error: symbol `mark' is already defined {standard input}:309: Error: symbol `items' is already defined {standard input}:315: Error: symbol `RETVAL' is already defined {standard input}:321: Error: symbol `PL_stack_sp' is already defined {standard input}:327: Error: symbol `RETVAL' is already defined {standard input}:333: Error: symbol `PL_stack_sp' is already defined {standard input}:339: Error: symbol `mark' is already defined {standard input}:345: Error: symbol `items' is already defined {standard input}:351: Error: symbol `PL_stack_sp' is already defined {standard input}:357: Error: symbol `PL_stack_sp' is already defined {standard input}:363: Error: symbol `mark' is already defined {standard input}:369: Error: symbol `items' is already defined {standard input}:399: Error: symbol `PL_stack_sp' is already defined make[1]: *** [_01basic_t_5cd2.o] Error 1 make[1]: Leaving directory `/home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_01basic_t_5cd2' A problem was encountered while attempting to compile and install your Inline CPP code. The command that failed was: make > out.make 2>&1 The build directory was: /home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_01basic_t_5cd2 To debug the problem, cd to the build directory, and inspect the output files. at t/01basic.t line 30 BEGIN failed--compilation aborted at t/01basic.t line 64. dubious Test returned status 2 (wstat 512, 0x200) DIED. FAILED tests 1-10 Failed 10/10 tests, 0.00% okay t/02prefix....make[1]: Entering directory `/home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_02prefix_t_4ede' /usr/local/bin/perl /usr/local/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/local/lib/perl5/5.8.8/ExtUtils/typemap -typemap /home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_02prefix_t_4ede/CPP.map _02prefix_t_4ede.xs > _02prefix_t_4ede.xsc && mv _02prefix_t_4ede.xsc _02prefix_t_4ede.c g++ -c -I/home/rob/perlmods/Inline-CPP-0.25/t -fno-strict-aliasing -pipe -I /usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSIO N=\"0.00\" -DXS_VERSION=\"0.00\" -fpic "-I/usr/local/lib/perl5/5.8.8/i686-linux/CORE" _02prefix_t_4ede.c In file included from /usr/include/c++/3.2.2/backward/iostream.h:31, from _02prefix_t_4ede.xs:2: /usr/include/c++/3.2.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated. _02prefix_t_4ede.c:34: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main__Foo_dummy(...)': _02prefix_t_4ede.c:35: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main__Foo_dummy(...)': _02prefix_t_4ede.c:35: redefinition of `void XS_main__Foo_dummy(...)' _02prefix_t_4ede.c:34: `void XS_main__Foo_dummy(...)' previously defined here _02prefix_t_4ede.c:35: redefinition of `void XS_main__Foo_dummy(...)' _02prefix_t_4ede.c:34: `void XS_main__Foo_dummy(...)' previously defined here _02prefix_t_4ede.c:37: `sp' undeclared (first use this function) _02prefix_t_4ede.c:37: (Each undeclared identifier is reported only once for each function it appears in.) _02prefix_t_4ede.c:38: parse error before `if' _02prefix_t_4ede.c:45: parse error before `if' _02prefix_t_4ede.c:50: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:50: type mismatch with previous external decl /usr/local/lib/perl5/5.8.8/i686-linux/CORE/thrdvar.h:34: previous external decl of `SV**PL_stack_sp' _02prefix_t_4ede.c:50: `tmpXSoff' undeclared (first use this function) _02prefix_t_4ede.c:50: parse error before `return' _02prefix_t_4ede.c:53: ISO C++ forbids declaration of `RETVAL' with no type _02prefix_t_4ede.c:53: redefinition of `int RETVAL' _02prefix_t_4ede.c:42: `int RETVAL' previously declared here _02prefix_t_4ede.c:53: `THIS' undeclared (first use this function) _02prefix_t_4ede.c:54: parse error before `=' token _02prefix_t_4ede.c:54: parse error before `++' token _02prefix_t_4ede.c:56: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:56: redefinition of `int PL_stack_sp' _02prefix_t_4ede.c:50: `int PL_stack_sp' previously defined here _02prefix_t_4ede.c:56: parse error before `return' _02prefix_t_4ede.c:60: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main__Foo_new(...)': _02prefix_t_4ede.c:61: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main__Foo_new(...)': _02prefix_t_4ede.c:61: redefinition of `void XS_main__Foo_new(...)' _02prefix_t_4ede.c:60: `void XS_main__Foo_new(...)' previously defined here _02prefix_t_4ede.c:61: redefinition of `void XS_main__Foo_new(...)' _02prefix_t_4ede.c:60: `void XS_main__Foo_new(...)' previously defined here _02prefix_t_4ede.c:63: redefinition of `I32 ax' _02prefix_t_4ede.c:37: `I32 ax' previously defined here _02prefix_t_4ede.c:63: redefinition of `SV**mark' _02prefix_t_4ede.c:37: `SV**mark' previously defined here _02prefix_t_4ede.c:63: redefinition of `I32 items' _02prefix_t_4ede.c:37: `I32 items' previously defined here _02prefix_t_4ede.c:64: parse error before `if' _02prefix_t_4ede.c:68: type mismatch with previous external decl _02prefix_t_4ede.c:53: previous external decl of `int RETVAL' _02prefix_t_4ede.c:70: ISO C++ forbids declaration of `RETVAL' with no type _02prefix_t_4ede.c:70: conflicting types for `int RETVAL' _02prefix_t_4ede.c:68: previous declaration as `Foo*RETVAL' _02prefix_t_4ede.c:70: invalid conversion from `Foo*' to `int' _02prefix_t_4ede.c:71: ISO C++ forbids declaration of `PL_stack_base' with no type _02prefix_t_4ede.c:71: variable-size type declared outside of any function _02prefix_t_4ede.c:71: type mismatch with previous external decl /usr/local/lib/perl5/5.8.8/i686-linux/CORE/thrdvar.h:42: previous external decl of `SV**PL_stack_base' _02prefix_t_4ede.c:71: invalid initializer _02prefix_t_4ede.c:72: `CLASS' undeclared (first use this function) _02prefix_t_4ede.c:72: ISO C++ forbids declaration of `Perl_sv_setref_pv' with no type _02prefix_t_4ede.c:72: `int Perl_sv_setref_pv' redeclared as different kind of symbol /usr/local/lib/perl5/5.8.8/i686-linux/CORE/proto.h:1229: previous declaration of `SV* Perl_sv_setref_pv(SV*, const char*, void*)' _02prefix_t_4ede.c:72: initializer list being treated as compound expression _02prefix_t_4ede.c:74: parse error before `}' token _02prefix_t_4ede.c:75: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:75: redefinition of `int PL_stack_sp' _02prefix_t_4ede.c:56: `int PL_stack_sp' previously defined here _02prefix_t_4ede.c:75: parse error before `return' _02prefix_t_4ede.c:79: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main__Foo_DESTROY(...)': _02prefix_t_4ede.c:80: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main__Foo_DESTROY(...)': _02prefix_t_4ede.c:80: redefinition of `void XS_main__Foo_DESTROY(...)' _02prefix_t_4ede.c:79: `void XS_main__Foo_DESTROY(...)' previously defined here _02prefix_t_4ede.c:80: redefinition of `void XS_main__Foo_DESTROY(...)' _02prefix_t_4ede.c:79: `void XS_main__Foo_DESTROY(...)' previously defined here _02prefix_t_4ede.c:82: redefinition of `I32 ax' _02prefix_t_4ede.c:63: `I32 ax' previously defined here _02prefix_t_4ede.c:82: redefinition of `SV**mark' _02prefix_t_4ede.c:63: `SV**mark' previously defined here _02prefix_t_4ede.c:82: cannot convert `int*' to `SV**' in initialization _02prefix_t_4ede.c:82: redefinition of `I32 items' _02prefix_t_4ede.c:63: `I32 items' previously defined here _02prefix_t_4ede.c:83: parse error before `if' _02prefix_t_4ede.c:93: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:93: redefinition of `int PL_stack_sp' _02prefix_t_4ede.c:75: `int PL_stack_sp' previously defined here _02prefix_t_4ede.c:93: parse error before `return' _02prefix_t_4ede.c:98: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:98: redefinition of `int PL_stack_sp' _02prefix_t_4ede.c:93: `int PL_stack_sp' previously defined here _02prefix_t_4ede.c:98: parse error before `return' _02prefix_t_4ede.c:102: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main_identity(...)': _02prefix_t_4ede.c:103: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void XS_main_identity(...)': _02prefix_t_4ede.c:103: redefinition of `void XS_main_identity(...)' _02prefix_t_4ede.c:102: `void XS_main_identity(...)' previously defined here _02prefix_t_4ede.c:103: redefinition of `void XS_main_identity(...)' _02prefix_t_4ede.c:102: `void XS_main_identity(...)' previously defined here _02prefix_t_4ede.c:105: redefinition of `I32 ax' _02prefix_t_4ede.c:82: `I32 ax' previously defined here _02prefix_t_4ede.c:105: redefinition of `SV**mark' _02prefix_t_4ede.c:82: `SV**mark' previously defined here _02prefix_t_4ede.c:105: cannot convert `int*' to `SV**' in initialization _02prefix_t_4ede.c:105: redefinition of `I32 items' _02prefix_t_4ede.c:82: `I32 items' previously defined here _02prefix_t_4ede.c:106: parse error before `if' _02prefix_t_4ede.c:110: type mismatch with previous external decl _02prefix_t_4ede.c:70: previous external decl of `int RETVAL' _02prefix_t_4ede.c:111: redefinition of `SV* const targ' _02prefix_t_4ede.c:43: `SV* const targ' previously defined here _02prefix_t_4ede.c:113: ISO C++ forbids declaration of `RETVAL' with no type _02prefix_t_4ede.c:113: conflicting types for `int RETVAL' _02prefix_t_4ede.c:110: previous declaration as `char*RETVAL' _02prefix_t_4ede.c:113: `in' undeclared (first use this function) _02prefix_t_4ede.c:114: ISO C++ forbids declaration of `Perl_sv_setpv' with no type _02prefix_t_4ede.c:114: `int Perl_sv_setpv' redeclared as different kind of symbol /usr/local/lib/perl5/5.8.8/i686-linux/CORE/proto.h:1231: previous declaration of `void Perl_sv_setpv(SV*, const char*)' _02prefix_t_4ede.c:114: initializer list being treated as compound expression _02prefix_t_4ede.c:114: parse error before `=' token _02prefix_t_4ede.c:114: parse error before `++' token _02prefix_t_4ede.c:116: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:116: redefinition of `int PL_stack_sp' _02prefix_t_4ede.c:98: `int PL_stack_sp' previously defined here _02prefix_t_4ede.c:116: parse error before `return' _02prefix_t_4ede.c:122: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void boot__02prefix_t_4ede(...)': _02prefix_t_4ede.c:123: parse error before `__attribute__' _02prefix_t_4ede.c: In function `void boot__02prefix_t_4ede(...)': _02prefix_t_4ede.c:123: redefinition of `void boot__02prefix_t_4ede(...)' _02prefix_t_4ede.c:122: `void boot__02prefix_t_4ede(...)' previously defined here _02prefix_t_4ede.c:123: redefinition of `void boot__02prefix_t_4ede(...)' _02prefix_t_4ede.c:122: `void boot__02prefix_t_4ede(...)' previously defined here _02prefix_t_4ede.c:125: redefinition of `I32 ax' _02prefix_t_4ede.c:105: `I32 ax' previously defined here _02prefix_t_4ede.c:125: redefinition of `SV**mark' _02prefix_t_4ede.c:105: `SV**mark' previously defined here _02prefix_t_4ede.c:125: cannot convert `int*' to `SV**' in initialization _02prefix_t_4ede.c:125: redefinition of `I32 items' _02prefix_t_4ede.c:105: `I32 items' previously defined here _02prefix_t_4ede.c:128: parse error before `do' _02prefix_t_4ede.c:128: base operand of `->' is not a pointer _02prefix_t_4ede.c:128: base operand of `->' is not a pointer _02prefix_t_4ede.c:128: invalid conversion from `int' to `SV*' _02prefix_t_4ede.c:128: parse error before `if' _02prefix_t_4ede.c:130: ISO C++ forbids declaration of `Perl_newXS' with no type _02prefix_t_4ede.c:130: `int Perl_newXS' redeclared as different kind of symbol /usr/local/lib/perl5/5.8.8/i686-linux/CORE/proto.h:829: previous declaration of `CV* Perl_newXS(char*, void (*)(CV*), char*)' _02prefix_t_4ede.c:130: initializer list being treated as compound expression _02prefix_t_4ede.c:130: left-hand operand of comma cannot resolve address of overloaded function _02prefix_t_4ede.c:130: invalid conversion from `char*' to `int' _02prefix_t_4ede.c:131: ISO C++ forbids declaration of `Perl_newXS' with no type _02prefix_t_4ede.c:131: redefinition of `int Perl_newXS' _02prefix_t_4ede.c:130: `int Perl_newXS' previously defined here _02prefix_t_4ede.c:131: initializer list being treated as compound expression _02prefix_t_4ede.c:131: left-hand operand of comma cannot resolve address of overloaded function _02prefix_t_4ede.c:131: invalid conversion from `char*' to `int' _02prefix_t_4ede.c:132: ISO C++ forbids declaration of `Perl_newXS' with no type _02prefix_t_4ede.c:132: redefinition of `int Perl_newXS' _02prefix_t_4ede.c:131: `int Perl_newXS' previously defined here _02prefix_t_4ede.c:132: initializer list being treated as compound expression _02prefix_t_4ede.c:132: left-hand operand of comma cannot resolve address of overloaded function _02prefix_t_4ede.c:132: invalid conversion from `char*' to `int' _02prefix_t_4ede.c:133: ISO C++ forbids declaration of `Perl_newXS' with no type _02prefix_t_4ede.c:133: redefinition of `int Perl_newXS' _02prefix_t_4ede.c:132: `int Perl_newXS' previously defined here _02prefix_t_4ede.c:133: initializer list being treated as compound expression _02prefix_t_4ede.c:133: left-hand operand of comma cannot resolve address of overloaded function _02prefix_t_4ede.c:133: invalid conversion from `char*' to `int' _02prefix_t_4ede.c:134: parse error before `do' _02prefix_t_4ede.c:134: ISO C++ forbids declaration of `PL_stack_sp' with no type _02prefix_t_4ede.c:134: redefinition of `int PL_stack_sp' _02prefix_t_4ede.c:116: `int PL_stack_sp' previously defined here _02prefix_t_4ede.c:134: parse error before `return' /usr/include/c++/3.2.2/streambuf: In function `void __static_initialization_and_destruction_0(int, int)': _02prefix_t_4ede.c:37: register name not specified for `SV**mark' _02prefix_t_4ede.c:63: register name not specified for `SV**mark' _02prefix_t_4ede.c:70: confused by earlier errors, bailing out {standard input}: Assembler messages: {standard input}:40: Error: symbol `ax' is already defined {standard input}:46: Error: symbol `mark' is already defined {standard input}:58: Error: symbol `ax' is already defined {standard input}:64: Error: symbol `ax' is already defined {standard input}:78: Error: symbol `ax' is already defined {standard input}:90: Error: symbol `Perl_newXS' is already defined {standard input}:96: Error: symbol `Perl_newXS' is already defined {standard input}:102: Error: symbol `Perl_newXS' is already defined make[1]: *** [_02prefix_t_4ede.o] Error 1 make[1]: Leaving directory `/home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_02prefix_t_4ede' A problem was encountered while attempting to compile and install your Inline CPP code. The command that failed was: make > out.make 2>&1 The build directory was: /home/rob/perlmods/Inline-CPP-0.25/_Inline/build/_02prefix_t_4ede To debug the problem, cd to the build directory, and inspect the output files. at t/02prefix.t line 0 INIT failed--call queue aborted. dubious Test returned status 2 (wstat 512, 0x200) DIED. FAILED tests 1-4 Failed 4/4 tests, 0.00% okay Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------------- --- t/01basic.t 2 512 10 20 200.00% 1-10 t/02prefix.t 2 512 4 8 200.00% 1-4 Failed 2/2 test scripts, 0.00% okay. 14/14 subtests failed, 0.00% okay. make: *** [test_dynamic] Error 2 ------------------------------------ This is quite bizarre, imo. The first error in that long list is: _01basic_t_5cd2.c:60: parse error before `__attribute__' and yet _01basic_t_5cd2.c does not even contain the string 'attribute" anywhere. Anyone know what's gone wrong here ? Cheers, Rob