Date: Wed, 13 Sep 2000 17:49:11 -0700 (PDT) From: John Polstra <jdp@polstra.com> To: hackers@freebsd.org Cc: Janick.Taillandier@ratp.fr Subject: Re: Trouble with dynamic loading of C++ libs in PHP v4.02 on FreeBSD 4.1 Message-ID: <200009140049.RAA01334@vashon.polstra.com> In-Reply-To: <4F88710E19D4D311B36A00508B08FD0F2C84DA@nyplme11.neuilly.ratp> References: <4F88710E19D4D311B36A00508B08FD0F2C84DA@nyplme11.neuilly.ratp>
next in thread | previous in thread | raw e-mail | index | archive | help
In article <4F88710E19D4D311B36A00508B08FD0F2C84DA@nyplme11.neuilly.ratp>, <Janick.Taillandier@ratp.fr> wrote: > 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 . > > If the library is called in a C program => no trouble. > If the library is called from PHP with the "dlopen()" function => > [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 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. (Note to eager committers: don't do this without coordinating with obrien. There are ramifications that aren't obvious.) As a work-around, try adding this to your main program. (I am assuming it is a C++ program too.) extern void terminate(void); void (*kludge_city)(void) = terminate; Another possibility would be to link explicitly with libgcc when creating your dynamic library: cc -shared -o libphptest.so ... -lgcc That might cause other problems, but probably not. John -- John Polstra jdp@polstra.com John D. Polstra & Co., Inc. Seattle, Washington USA "Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa 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?200009140049.RAA01334>