Hi
php-4.1.2
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)
fi
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/mysql/libmysql
-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/mysql/libmysql
-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
/home/wic/php-4.1.2/modules
PATH="$PATH:/sbin" ldconfig -n /home/wic/php-4.1.2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/home/wic/php-4.1.2/modules
[etc...]
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.
/Regards
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php