This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: problem linking with GCC 3.0 -- undefined reference to `std::codecvt<char, char, __mbstate_t>::id


After recovering a little bit from pounding my head against the wall on
this problem, I realized that I omitted several pieces of important information
in my previous message.  I'm running Linux Mandrake 7.2 and I built gcc 3.0
and binutils from source.  My system also has the package gcc-2.95.2-12mdk
installed on it and I have installed gcc 3.0 under /usr/local.  I also built
glibc 2.2.3 using gcc 3.0 and installed it under /usr/local.

The portion of my Makefile relevant to the link command is

OBJ = admin4pgdb.o ecompound.o ereaction.o epathway.o emsubsystem.o ecell.o driver_dbsmatrix.o

CC = /usr/local/bin/g++ -O2 -Wall
VERBOSE = -v -Wl,--verbose
LFLAGS = -nostdlib -nostartfiles -L/usr/local/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0
LINKER = -Wl,-dynamic-linker=/usr/local/lib/ld-linux.so.2
RPATH = -Wl,-rpath=/usr/local/lib,-rpath=/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0
LIBS = -lstdc++ -lm -lpq

$(CC) $(VERBOSE) $(OBJ) -o smatrix $(LFLAGS) $(LINKER) $(RPATH) $(LIBS)

I am attaching the output from make.  As I mentioned before, any help would be
greatly appreciated, even if it amounts to telling me that I'm an idiot.

Thank you very much,

Mark

On Wednesday 11 July 2001 07:30, Mark Martin wrote:
> The following problem has been preventing me from linking when using
> streams in C++ code with GCC 3.0
>
> In function `std::basic_streambuf<char, std::char_traits<char> >::overflow(int)':
>
> /usr/local/include/g++-v3/bits/std_streambuf.h(.gnu.linkonce.t._ZSt9use_fac
>etISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale+0xc): undefined reference to
> `std::codecvt<char, char, __mbstate_t>::id'
>
> This is the same problem linking that Vickle Chan reported on June 15 on
> gcc-help (See http://gcc.gnu.org/ml/gcc-help/2001-06/msg00113.html) and
> that Dirk Bonekamper reported as a bug on July 6 on gcc-bugs (See
> http://gcc.gnu.org/ml/gcc-bugs/2001-07/msg00247.html).
>
> I have read all of the relevant FAQs and I have tried several different
> approaches to fixing this problem, including installing the most recent
> versions of codecvt.h, locale_facets.tcc, stream_iterator.h, streambuf.tcc,
> and streambuf_iterator.h from the CVS repository.  I would be happy to
> gather and provide whatever data might be relevant to fixing this problem.
>
> Any help with this problem would be greatly appreciated!
>
> Mark
/usr/local/bin/g++ -O2 -Wall -g -c admin4pgdb.cpp
/usr/local/bin/g++ -O2 -Wall -g -c ecompound.cpp
/usr/local/bin/g++ -O2 -Wall -g -c -I/usr/local/include/pgsql ereaction.cpp
/usr/local/bin/g++ -O2 -Wall -g -c -I/usr/local/include/pgsql epathway.cpp
/usr/local/bin/g++ -O2 -Wall -g -c -I/usr/local/include/pgsql emsubsystem.cpp
/usr/local/bin/g++ -O2 -Wall -g -c -I/usr/local/include/pgsql ecell.cpp
/usr/local/bin/g++ -O2 -Wall -g -c driver_dbsmatrix.cpp
#/usr/local/bin/ld --verbose -o smatrix admin4pgdb.o ecompound.o ereaction.o epathway.o emsubsystem.o ecell.o driver_dbsmatrix.o -nostdlib -nostartfiles -L/usr/local/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -Wl,-rpath=/usr/local/lib,-rpath=/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -lstdc++ -lm -lpq
/usr/local/bin/g++ -O2 -Wall -v -Wl,--verbose admin4pgdb.o ecompound.o ereaction.o epathway.o emsubsystem.o ecell.o driver_dbsmatrix.o -o smatrix -nostdlib -nostartfiles -L/usr/local/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -Wl,-dynamic-linker=/usr/local/lib/ld-linux.so.2 -Wl,-rpath=/usr/local/lib,-rpath=/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -lstdc++ -lm -lpq
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../gcc-3.0/configure --enable-threads
Thread model: posix
gcc version 3.0
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o smatrix -L/usr/local/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/../../../../i686-pc-linux-gnu/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/../../.. --verbose admin4pgdb.o ecompound.o ereaction.o epathway.o emsubsystem.o ecell.o driver_dbsmatrix.o -dynamic-linker=/usr/local/lib/ld-linux.so.2 -rpath=/usr/local/lib -rpath=/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0 -lstdc++ -lm -lpq
GNU ld version 2.11 (with BFD 2.11)
  Supported emulations:
   elf_i386
   i386linux
using internal linker script:
==================================================
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
	      "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/i686-pc-linux-gnu/lib);
/* Do we need any of these for elf?
   __DYNAMIC = 0;    */
SECTIONS
{
  /* Read-only sections, merged into text segment: */
  . = 0x08048000 + SIZEOF_HEADERS;
  .interp     : { *(.interp) 	}
  .hash          : { *(.hash)		}
  .dynsym        : { *(.dynsym)		}
  .dynstr        : { *(.dynstr)		}
  .gnu.version   : { *(.gnu.version)	}
  .gnu.version_d   : { *(.gnu.version_d)	}
  .gnu.version_r   : { *(.gnu.version_r)	}
  .rel.init      : { *(.rel.init)	}
  .rela.init     : { *(.rela.init)	}
  .rel.text      :
    {
      *(.rel.text)
      *(.rel.text.*)
      *(.rel.gnu.linkonce.t.*)
    }
  .rela.text     :
    {
      *(.rela.text)
      *(.rela.text.*)
      *(.rela.gnu.linkonce.t.*)
    }
  .rel.fini      : { *(.rel.fini)	}
  .rela.fini     : { *(.rela.fini)	}
  .rel.rodata    :
    {
      *(.rel.rodata)
      *(.rel.rodata.*)
      *(.rel.gnu.linkonce.r.*)
    }
  .rela.rodata   :
    {
      *(.rela.rodata)
      *(.rela.rodata.*)
      *(.rela.gnu.linkonce.r.*)
    }
  .rel.data      :
    {
      *(.rel.data)
      *(.rel.data.*)
      *(.rel.gnu.linkonce.d.*)
    }
  .rela.data     :
    {
      *(.rela.data)
      *(.rela.data.*)
      *(.rela.gnu.linkonce.d.*)
    }
  .rel.ctors     : { *(.rel.ctors)	}
  .rela.ctors    : { *(.rela.ctors)	}
  .rel.dtors     : { *(.rel.dtors)	}
  .rela.dtors    : { *(.rela.dtors)	}
  .rel.got       : { *(.rel.got)		}
  .rela.got      : { *(.rela.got)		}
  .rel.sdata     :
    {
      *(.rel.sdata)
      *(.rel.sdata.*)
      *(.rel.gnu.linkonce.s.*)
    }
  .rela.sdata     :
    {
      *(.rela.sdata)
      *(.rela.sdata.*)
      *(.rela.gnu.linkonce.s.*)
    }
  .rel.sbss      :
    { 
      *(.rel.sbss)
      *(.rel.sbss.*)
      *(.rel.gnu.linkonce.sb.*)
    }
  .rela.sbss     :
    {
      *(.rela.sbss)
      *(.rela.sbss.*)
      *(.rel.gnu.linkonce.sb.*)
    }
  .rel.sdata2    : 
    { 
      *(.rel.sdata2)
      *(.rel.sdata2.*)
      *(.rel.gnu.linkonce.s2.*)
    }
  .rela.sdata2   : 
    {
      *(.rela.sdata2)
      *(.rela.sdata2.*)
      *(.rela.gnu.linkonce.s2.*)
    }
  .rel.sbss2     : 
    { 
      *(.rel.sbss2)	
      *(.rel.sbss2.*)
      *(.rel.gnu.linkonce.sb2.*)
    }
  .rela.sbss2    : 
    { 
      *(.rela.sbss2)	
      *(.rela.sbss2.*)
      *(.rela.gnu.linkonce.sb2.*)
    }
  .rel.bss       : 
    { 
      *(.rel.bss)
      *(.rel.bss.*)
      *(.rel.gnu.linkonce.b.*)
    }
  .rela.bss      : 
    { 
      *(.rela.bss)
      *(.rela.bss.*)
      *(.rela.gnu.linkonce.b.*)
    }
  .rel.plt       : { *(.rel.plt)		}
  .rela.plt      : { *(.rela.plt)		}
  .init          : 
  { 
    KEEP (*(.init))
  } =0x9090
  .plt      : { *(.plt)	}
  .text      :
  {
    *(.text)
    *(.text.*)
    *(.stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
    *(.gnu.linkonce.t.*)
  } =0x9090
  .fini      :
  {
    KEEP (*(.fini))
  } =0x9090
  PROVIDE (__etext = .);
  PROVIDE (_etext = .);
  PROVIDE (etext = .);
  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) }
  .rodata1   : { *(.rodata1) }
  .sdata2   : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) }
  .sbss2   : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = ALIGN(0x1000) + (. & (0x1000 - 1));
  .data    :
  {
    *(.data)
    *(.data.*)
    *(.gnu.linkonce.d.*)
    SORT(CONSTRUCTORS)
  }
  .data1   : { *(.data1) }
  .eh_frame : { KEEP (*(.eh_frame)) }
  .gcc_except_table : { *(.gcc_except_table) }
  .ctors   : 
  {
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */
    KEEP (*crtbegin.o(.ctors))
    /* We don't want to include the .ctor section from
       from the crtend.o file until after the sorted ctors.
       The .ctor section from the crtend file contains the
       end of ctors marker and it must be last */
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
  }
   .dtors         :
  {
    KEEP (*crtbegin.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  }
  .got		  : { *(.got.plt) *(.got) }
  .dynamic       : { *(.dynamic) }
  /* We want the small data sections together, so single-instruction offsets
     can access them all, and initialized data all before uninitialized, so
     we can shorten the on-disk segment size.  */
  .sdata     : 
  {
    *(.sdata) 
    *(.sdata.*)
    *(.gnu.linkonce.s.*)
  }
  _edata = .;
  PROVIDE (edata = .);
  __bss_start = .;
  .sbss      :
  {
    PROVIDE (__sbss_start = .);
    PROVIDE (___sbss_start = .);
    *(.dynsbss)
    *(.sbss)
    *(.sbss.*)
    *(.gnu.linkonce.sb.*)
    *(.scommon)
    PROVIDE (__sbss_end = .);
    PROVIDE (___sbss_end = .);
  }
  .bss       :
  {
   *(.dynbss)
   *(.bss)
   *(.bss.*)
   *(.gnu.linkonce.b.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   . = ALIGN(32 / 8);
  }
  . = ALIGN(32 / 8);
  _end = .;
  PROVIDE (end = .);
  /* Stabs debugging sections.  */
  .stab 0 : { *(.stab) }
  .stabstr 0 : { *(.stabstr) }
  .stab.excl 0 : { *(.stab.excl) }
  .stab.exclstr 0 : { *(.stab.exclstr) }
  .stab.index 0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment 0 : { *(.comment) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }
  /* These must appear regardless of  .  */
}


==================================================
attempt to open admin4pgdb.o succeeded
admin4pgdb.o
attempt to open ecompound.o succeeded
ecompound.o
attempt to open ereaction.o succeeded
ereaction.o
attempt to open epathway.o succeeded
epathway.o
attempt to open emsubsystem.o succeeded
emsubsystem.o
attempt to open ecell.o succeeded
ecell.o
attempt to open driver_dbsmatrix.o succeeded
driver_dbsmatrix.o
attempt to open /usr/local/lib/libstdc++.so succeeded
-lstdc++ (/usr/local/lib/libstdc++.so)
attempt to open /usr/local/lib/libm.so succeeded
-lm (/usr/local/lib/libm.so)
attempt to open /usr/local/lib/libpq.so succeeded
-lpq (/usr/local/lib/libpq.so)
libgcc_s.so.1 needed by /usr/local/lib/libstdc++.so
found libgcc_s.so.1 at /usr/local/lib/libgcc_s.so.1
libc.so.6 needed by /usr/local/lib/libstdc++.so
found libc.so.6 at /usr/local/lib/libc.so.6
libcrypt.so.1 needed by /usr/local/lib/libpq.so
found libcrypt.so.1 at /usr/local/lib/libcrypt.so/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/../../../../i686-pc-linux-gnu/bin/ld: warning: cannot find entry symbol _start; defaulting to 0804c390
admin4pgdb.o: In function `std::basic_streambuf<char, std::char_traits<char> >::overflow(int)':
/usr/local/include/g++-v3/bits/std_streambuf.h(.gnu.linkonce.t._ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale+0xc): undefined reference to `std::codecvt<char, char, __mbstate_t>::id'
.1
libresolv.so.2 needed by /usr/local/lib/libpq.so
found libresolv.so.2 at /usr/local/lib/libresolv.so.2
libnsl.so.1 needed by /usr/local/lib/libpq.so
found libnsl.so.1 at /usr/local/lib/libnsl.so.1
ld-linux.so.2 needed by /usr/local/lib/libc.so.6
found ld-linux.so.2 at /usr/local/lib/ld-linux.so.2
collect2: ld returned 1 exit status
make: *** [smatrix] Error 1

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]