gnu/13525: gcc fails load against library with both C++ and C
bostic at abyssinian.sleepycat.com
Wed May 21 07:02:21 PDT 2003
> Synopsis: gcc fails load against library with both C++ and C modules
> State-Changed-From-To: feedback->closed
> State-Changed-By: gerald
> State-Changed-When: Wed May 21 06:41:18 PDT 2003
> I debugged this in further depth, and it is apparently operator error: As
> soon as you use any C++ library routines (whether directly or indirectly)
> you need to link the final binary using g++, not gcc, and the g++ driver
> then will link any additional libraries required.
I said in the bug report that you could build, if you built with
g++, not gcc.
> The following would have worked for the example provided:
> gcc -Wall -c -fpic a.c
> c++ -Wall -c -fpic b.cc
> gcc -shared -o libab.so a.o b.o
> gcc -Wall -c c.c
> c++ -o c c.o ./libab.so
Your analysis misses the point I tried to make -- if you write
a C program, which only uses C library modules, why should a C++
compiler be needed?
Neither the C code you wrote, nor the C library modules you
loaded, should have "used any C++ library routines (directly or
indirectly)" -- why does the act of loading against a library
that contains both C and C++ modules, suddenly require use of
a C++ compiler?
There shouldn't be any "additional libraries" required -- it's
a program written entirely in C, it never loaded a C++ anything,
why would there be any need for additional C++ libraries!?
I mean, it's probably that there's something that's getting
magically loaded out of the library, just because it exists
in the library, but my point is there's no reason for that
to happen that I can think of.
Keith Bostic bostic at sleepycat.com
Sleepycat Software Inc. keithbosticim (ymsgid)
118 Tower Rd. +1-781-259-3139
Lincoln, MA 01773 http://www.sleepycat.com
More information about the freebsd-bugs