PHP: Compile a PECL extension in 64 bits when your compiler runs 32 bits

At my job, I use a Solaris distribution as a development server and the package manager doesn't propose the Xdebug package so I need to use the PECL command, which is fine. But, the PECL manager uses the system compiler which compiles binaries with 32 bits flags although my LAMP stack is 64 bits linked.

No other choice to compile manually my extension and after a few hours of hell (yes, I'm not a C pro :cwy:), I found how to compile correctly my extension.

So, if one day you need to compile a PHP extension in a different architecture, here's the solution (at least, it worked for Solaris).

Here are the steps to compile Xdebug using the default configuration:

git clone https://github.com/derickr/xdebug.git
cd xdebug
phpize
./configure --enable-xdebug
make
cp modules/xdebug.so /path/to/your/php/extensions/dir/
echo "zend_extension=\"/path/to/your/php/extensions/dir/xdebug.so\"" >> /path/to/your/php.ini
php -v
PHP 5.3.8 (cli) (built: Dec  6 2011 20:23:50) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with Xdebug v2.3.0dev, Copyright (c) 2002-2012, by Derick Rethans

Now, if we want it to use the 64 bits architecture, we will need to add some extra variable declaration before we configure the extension:

CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure --enable-xdebug

To make sure it's well 64 bits, run the following command:

file modules/xdebug.so
modules/xdebug.so:      ELF 64-bit LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped, no debugging information available

Here we are! Looks easy but not really when you're not accustomed to that kind of problem, especially when using a OS you don't know ;).
I added a note on the PHP documentation about this trick =P.

See ya later!