Bug #63104 [Opn->Ana]: php fail to build with --enable-intl
| From: | johannes@php.net | Date: | Thu, 20 Sep 2012 12:21:33 +0000 |
| Subject: | Bug #63104 [Opn->Ana]: php fail to build with --enable-intl | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-173587@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=63104&edit=1
ID: 63104
Updated by: johannes@php.net
Reported by: maduma at pt dot lu
Summary: php fail to build with --enable-intl
-Status: Open
+Status: Analyzed
Type: Bug
Package: Compile Failure
Operating System: Solaris 11
PHP Version: 5.4.7
-Assigned To:
+Assigned To: bjori
Block user comment: N
Private report: N
New Comment:
The actual issue is that we're linking using the C compiler, not the C++ compiler. The later
would pull the correct C++ libs in.
What we have to do is
1) go through all SAPI config.m4's and modify their linker calls to either use CC or CXX
depending on i.e. $php_cxx_done
2) remove PHP_ADD_LIBRARY(stdc++) from AC_DEFUN([PHP_REQUIRE_CXX]
3) make sure none of our bundled libs has issues when linked with C++ standard libs (especially as
they might depend on a lib pulling a different C++ runtime in ...)
Then we're done. But step 3 is rather complicated. Better would be if libintl itself would pull
in the proper C++ runtime but we don't have control over that.
A work-around is to only do step 2 from that list and have the user build the intl extension shared.
In that case we already use the C++ compiler for linking the .so/.dynlib/...
Assigning to Hannes, who added the explicit linkage to libstdc++. Maye he has some thoughts or feels
brave enough to us C++ for linkage ;-)
Previous Comments:
------------------------------------------------------------------------
[2012-09-19 16:26:23] reeze@php.net
similar to https://bugs.php.net/bug.php?id=48795
but different platform.
------------------------------------------------------------------------
[2012-09-19 08:03:59] laruence@php.net
I can not reproduce it:
$php -m | grep intl
intl
$php -r 'proc_open("ls");'
PHP Warning: proc_open() expects at least 3 parameters, 1 given in Command line
code on line 1
------------------------------------------------------------------------
[2012-09-19 07:46:30] maduma at pt dot lu
Still have problems with intl extention. When i compile 5.4 with intl the proc_open() function is
not defined anymore
# --with-intl
/usr/php/5.4/bin/php -r 'proc_open();'
PHP Fatal error: Call to undefined function proc_open() in Command line code on line 1
# without intl
/usr/php/5.4/bin/php -r 'proc_open();'
PHP Warning: proc_open() expects at least 3 parameters, 0 given in Command line code on line 1
------------------------------------------------------------------------
[2012-09-18 11:09:26] maduma at pt dot lu
Need also to create libCstd.so and libCrun.so link
ln -s /usr/lib/libCstd.so.1 /usr/lib/libCstd.so
ln -s /usr/lib/libCrun.so.1 /usr/lib/libCrun.so
------------------------------------------------------------------------
[2012-09-18 07:52:33] maduma at pt dot lu
It seems that the build use g++ compiler for c++ and cc for c compiler
I've now defined cc and CC env variable
cc=/opt/solarisstudio12.3/bin/cc CXX=/opt/solarisstudio12.3/bin/CC \
./configure --prefix=/usr/php/5.4 --sysconfdir=/etc/php/5.4 \
--mandir=/usr/php/5.4/man --with-config-file-path=/etc/php/5.4 \
--enable-intl
The build failed also in the linker
/bin/sh /root/php/php-5.4.7/libtool --silent --preserve-dup-deps --mode=link cc -export-dynamic
-I/usr/include -O -xs -xstrconst -zlazyload -xmemalign=8s ext/date/php_date.lo ... -lstdc++
-lrt -lm -lnsl -lsocket -lxml2 -lz -lm -lsocket -lnsl -lxml2 -lz -lm -lsocket -lnsl -lCrun -lCstd
-lm -licui18n -licuuc -licudata -lm -licuio -lxml2 -lz -lm -lsocket -lnsl -lxml2 -lz -lm -lsocket
-lnsl -lxml2 -lz -lm -lsocket -lnsl -lxml2 -lz -lm -lsocket -lnsl -o sapi/cli/php
ld: fatal: library -lstdc++: not found
ld: fatal: file processing errors. No output written to sapi/cli/php
Why do the we need stdc++ (g++ related) !
I just removed -lstdc++ and it working now.
Need to test it now
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=63104
--
Edit this bug report at https://bugs.php.net/bug.php?id=63104&edit=1