Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Sep 2000 09:29:34 -0600 (MDT)
From:      Nate Williams <nate@yogotech.com>
To:        John Polstra <jdp@polstra.com>
Cc:        hackers@FreeBSD.ORG, Janick.Taillandier@ratp.fr
Subject:   Re: Trouble with dynamic loading of C++ libs in PHP v4.02 on FreeBSD  4.1
Message-ID:  <200009141529.JAA17389@nomad.yogotech.com>
In-Reply-To: <200009140049.RAA01334@vashon.polstra.com>
References:  <4F88710E19D4D311B36A00508B08FD0F2C84DA@nyplme11.neuilly.ratp> <200009140049.RAA01334@vashon.polstra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> > We are trying to create a dynamic library of extensions to PHP 4.02=
.
> > This library implements a C++ class and has a C interface using the=
 "Extern C"
> > declaration.
> > This library is linked with libstdc++.so.3 .
> >=20
> > If the library is called in a C program =3D> no trouble.
> > If the library is called from PHP with the "dlopen()" function =3D>=

> > [Warning: Unable to load dynamic library
> > '/users/em/ftp/php/test_cpp/debug/libphptest.so' - /usr/lib/libstdc=
++.so.3:
> > Undefined symbol "__ti9exception" in
> > /usr/local/httpd/htdocs/www/Iti_q/testso.php on line 2
>=20
> This is because FreeBSD uses an archive library "libgcc.a" instead
> of a shared library.  That means that everything from libgcc which
> is needed by your shared libraries had better already be linked into
> the main program.  The right solution is for us to use a shared
> library for libgcc.

At one point libgcc was shared (FreeBSD 1.*), and it caused way more
problems that it solved.




Nate


  (Note to eager committers: don't do this without
> coordinating with obrien.  There are ramifications that aren't
> obvious.)
>=20
> As a work-around, try adding this to your main program.  (I am
> assuming it is a C++ program too.)
>=20
>     extern void terminate(void);
>     void (*kludge_city)(void) =3D terminate;
>=20
> Another possibility would be to link explicitly with libgcc when
> creating your dynamic library:
>=20
>     cc -shared -o libphptest.so ... -lgcc
>=20
> That might cause other problems, but probably not.
>=20
> John
> --=20
>   John Polstra                                               jdp@pols=
tra.com
>   John D. Polstra & Co., Inc.                        Seattle, Washing=
ton USA
>   "Disappointment is a good sign of basic intelligence."  -- Ch=F6gya=
m Trungpa
>=20
>=20
>=20
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200009141529.JAA17389>