I've written a PHP5 extension in C++ that builds great on Linux with GCC, whether I compile it
into PHP or build it as a shared library.
On Solaris with Sun CC, however, I've had to manually edit the Makefile or the libtool script in
order to successfully build my extension. When I compile the extension into PHP, I have to change
$(CC) to $(CXX) in certain places in the Makefile. When I build it as a dynamic library, I have to
edit libtool so that it uses $(CXX) and not ld to create the shared library.
Am I overlooking some configuration step that eliminates the need to manually edit these files?
Thanks,
- Mark
Add PHP_REQUIRE_CXX to your config.m4
--Jani
I've written a PHP5 extension in C++ that builds great on Linux with GCC, whether I compile it
into PHP or build it as a shared library.On Solaris with Sun CC, however, I've had to manually edit the Makefile or the libtool script in
order to successfully build my extension. When I compile the extension into PHP, I have to change
$(CC) to $(CXX) in certain places in the Makefile. When I build it as a dynamic library, I have to
edit libtool so that it uses $(CXX) and not ld to create the shared library.Am I overlooking some configuration step that eliminates the need to manually edit these files?
Thanks,
- Mark
Add PHP_REQUIRE_CXX to your config.m4
Thanks for the reply, but I've already got PHP_REQUIRE_CXX in my config.m4, and I'm setting the
cxx flag in PHP_NEW_EXTENSION. Is there anything else I'm missing?
- Mark
--Jani
I've written a PHP5 extension in C++ that builds great on Linux with GCC, whether I compile it
into PHP or build it as a shared library.On Solaris with Sun CC, however, I've had to manually edit the Makefile or the libtool script in
order to successfully build my extension. When I compile the extension into PHP, I have to change
$(CC) to $(CXX) in certain places in the Makefile. When I build it as a dynamic library, I have
to
edit libtool so that it uses $(CXX) and not ld to create the shared library.Am I overlooking some configuration step that eliminates the need to manually edit these files?
Thanks,
- Mark
On Solaris with Sun CC, however, I've had to manually edit the
Makefile or the libtool script in order to successfully build
my extension. When I compile the extension into PHP, I have to
change $(CC) to $(CXX) in certain places in the Makefile.
*.cpp files are automatically compiled using $(CXX). Make
sure that you use the sanctioned suffix.
When I build it as a dynamic library, I have to edit libtool so
that it uses $(CXX) and not ld to create the shared library.
libtool 1.4 does not support building DSOs in a portable way
for any language but C. Try libtool 1.5.
- Sascha
fwiw, I've never had these problems with gcc's C++ compiler on Solaris when
building C++ extensions, and the final linking step is usually done by gcc,
not g++. When you do the linking, do you link to the stdc++ library?
J
Mark Spruiell wrote:
I've written a PHP5 extension in C++ that builds great on Linux with GCC,
whether I compile it into PHP or build it as a shared library.On Solaris with Sun CC, however, I've had to manually edit the Makefile or
the libtool script in order to successfully build my extension. When I
compile the extension into PHP, I have to change $(CC) to $(CXX) in
certain places in the Makefile. When I build it as a dynamic library, I
have to edit libtool so that it uses $(CXX) and not ld to create the
shared library.Am I overlooking some configuration step that eliminates the need to
manually edit these files?Thanks,
- Mark
fwiw, I've never had these problems with gcc's C++ compiler on Solaris when
building C++ extensions, and the final linking step is usually done by gcc,
not g++. When you do the linking, do you link to the stdc++ library?
Unlike GCC, Sun's C and C++ compilers are independent entities, therefore you
can't link a C++ program or shared library when the C compiler is driving the
linker. It's also not possible to compile PHP's C code with Sun's C++ compiler.
I guess we're a little spoiled by GCC. :)
- Mark
J
Mark Spruiell wrote:
I've written a PHP5 extension in C++ that builds great on Linux with GCC,
whether I compile it into PHP or build it as a shared library.On Solaris with Sun CC, however, I've had to manually edit the Makefile or
the libtool script in order to successfully build my extension. When I
compile the extension into PHP, I have to change $(CC) to $(CXX) in
certain places in the Makefile. When I build it as a dynamic library, I
have to edit libtool so that it uses $(CXX) and not ld to create the
shared library.Am I overlooking some configuration step that eliminates the need to
manually edit these files?Thanks,
- Mark
Mark Spruiell wrote:
Unlike GCC, Sun's C and C++ compilers are independent entities, therefore
you can't link a C++ program or shared library when the C compiler is
driving the linker. It's also not possible to compile PHP's C code with
Sun's C++ compiler.I guess we're a little spoiled by GCC. :)
- Mark
I suppose so. I rarely use Sun's compiler so I won't hazard a guess as to
what's going on here. I guess you don't have access to gcc on that machine,
eh?
J
Mark Spruiell wrote:
Unlike GCC, Sun's C and C++ compilers are independent entities, therefore
you can't link a C++ program or shared library when the C compiler is
driving the linker. It's also not possible to compile PHP's C code with
Sun's C++ compiler.I guess we're a little spoiled by GCC. :)
- Mark
I suppose so. I rarely use Sun's compiler so I won't hazard a guess as to
what's going on here. I guess you don't have access to gcc on that machine,
eh?
GCC works great for me on Linux, but we haven't needed to port our code to GCC
on Solaris yet.
- Mark