linux RH 7.2

I have created a small php extension. The extension works as expected 
when I compile it using

$ ./configure --with-foo && make  # foo is the extension

It gets compiled into the php binary. All is well, but I would like to 
compile my extension as a loadable modules (ie to use with the dl() 
function). Thus

$ ./configure --with-foo=shared && make

The compilation completes with no errors. The php binary works (my foo 
ext is not included in the binary), but I end up with *no* 'foo.so' 
file. Instead I get this

$ ls -l modules/
  51776 Apr  5 13:11 foo.a
    647 Apr  5 13:11 foo.la

I expected to see a 'foo.so' file.

Obviously I cannot use dl() on these files.

The foo extension is as simple as possible, just to illustrate the 
problem. It was created using these commands:

1.  $ cd ~/php-4.1.2/ext
2.  $ ./ext_skel --extname=foo
3.  $ cd ..
4.  $ vi ext/foo/config.m4
5.  $ ./buildconf
6.  $ ./configure --with-foo=shared
7.  $ make

The whole config.m4:

PHP_ARG_WITH(foo, for foo support,
[  --with-foo             Include foo support])

if test "$PHP_FOO" != "no"; then
   PHP_EXTENSION(foo, $ext_shared)

Output from make:

make[3]: Entering directory `/home/wic/php-4.1.2/ext/foo'
/bin/sh /home/wic/php-4.1.2/libtool --silent --mode=compile gcc -I. 
-I/home/wic/php-4.1.2/ext/foo -I/home/wic/php-4.1.2/main 
-I/home/wic/php-4.1.2 -I/home/wic/php-4.1.2/Zend 
-I/home/wic/php-4.1.2/ext/xml/expat  -I/home/wic/php-4.1.2/TSRM -g -O2 
-prefer-pic  -c foo.c && touch foo.slo
/bin/sh /home/wic/php-4.1.2/libtool --silent --mode=link gcc  -I. 
-I/home/wic/php-4.1.2/ext/foo -I/home/wic/php-4.1.2/main 
-I/home/wic/php-4.1.2 -I/home/wic/php-4.1.2/Zend 
-I/home/wic/php-4.1.2/ext/xml/expat  -I/home/wic/php-4.1.2/TSRM -g -O2 
-prefer-non-pic -static   -o foo.la -avoid-version -module -rpath 
/home/wic/php-4.1.2/modules  foo.lo
/bin/sh /home/wic/php-4.1.2/libtool --silent --mode=install cp foo.la 
PATH="$PATH:/sbin" ldconfig -n /home/wic/php-4.1.2/modules
Libraries have been installed in:


Note that I can manually create a so-file from the foo.a file using ld 
as in:

$ cd modules; ar x foo.a; ld -Bshareable -o foo.so foo.o

and then call dl("foo.so"), but that is not the way to go, right???

I think there is some arcance libtool switch missing in the Makefile, 
or I need something else in the config.m4 file

Btw, my real extension is a lot more complex, but it has the same 
problems so I figured this foo-thing would be a bit easier to debug :-)

I have searched high and low for any leads, but nothing has turned up 
so far.


PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to