I found one problem. I had to add "=shared" after --enable-my_ext. So, this is what I did:
./configure --enable-my_ext=shared
Now, the makefile looks much better. (I have attached the Makefile.) However, I get errors in make. Those errors are generated when invoking the libtool command.
[EMAIL PROTECTED] tryExtendPHP4.3.3]$ make
/bin/sh /home/anas/shop/tryExtendPHP4.3.3/libtool --mode=compile gcc -I. -I/home/anas/shop/tryExtendPHP4.3.3 -DPHP_ATOM_INC -I/home/anas/shop/tryExtendPHP4.3.3/include -I/home/anas/shop/tryExtendPHP4.3.3/main -I/home/anas/shop/tryExtendPHP4.3.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/Zend -I/usr/local/include/php/TSRM -DHAVE_CONFIG_H -g -O2 -prefer-pic -c /home/anas/shop/tryExtendPHP4.3.3/my_ext.c -o my_ext.lo
/home/anas/shop/tryExtendPHP4.3.3/libtool: s%^.*/%%: No such file or directory
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
: compile: cannot determine name of library object from `'
make: *** [my_ext.lo] Error 1
I don't know what is going on. Could some expert please advise. Thank you.
Here is output of the same command with --debug option:
[EMAIL PROTECTED] tryExtendPHP4.3.3]$ make
/bin/sh /home/anas/shop/tryExtendPHP4.3.3/libtool --debug --mode=compile gcc -I. -I/home/anas/shop/tryExtendPHP4.3.3 -DPHP_ATOM_INC -I/home/anas/shop/tryExtendPHP4.3.3/include -I/home/anas/shop/tryExtendPHP4.3.3/main -I/home/anas/shop/tryExtendPHP4.3.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/Zend -I/usr/local/include/php/TSRM -DHAVE_CONFIG_H -g -O2 -prefer-pic -c /home/anas/shop/tryExtendPHP4.3.3/my_ext.c -o my_ext.lo
/home/anas/shop/tryExtendPHP4.3.3/libtool: s%^.*/%%: No such file or directory
: enabling shell trace mode
+ test 20 -gt 0
+ arg=--mode=compile
+ shift
++ echo X--mode=compile
++ -e '1s/^X//' -e 's/[-_a-zA-Z0-9]*=//'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ optarg=
+ test -n ''
+ mode=
+ test 19 -gt 0
+ arg=gcc
+ shift
+ optarg=
+ test -n ''
+ nonopt=gcc
+ break
+ test -n ''
+ exec_cmd=
+ test -z ''
+ test -z ''
+ mode=link
+ mode=compile
+ break
+ test -n ''
+ generic_help=Try ` --help' for more information.
+ help=Try ` --help --mode=compile' for more information.
+ modename=: compile
+ base_compile=
+ prev=
+ lastarg=
+ srcfile=gcc
+ suppress_output=
+ user_target=no
+ lastarg=gcc
+ srcfile=-I.
++ echo Xgcc
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z ''
+ base_compile=""
+ lastarg=-I.
+ srcfile=-I/home/anas/shop/tryExtendPHP4.3.3
++ echo X-I.
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '""'
+ base_compile="" ""
+ lastarg=-I/home/anas/shop/tryExtendPHP4.3.3
+ srcfile=-DPHP_ATOM_INC
++ echo X-I/home/anas/shop/tryExtendPHP4.3.3
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" ""'
+ base_compile="" "" ""
+ lastarg=-DPHP_ATOM_INC
+ srcfile=-I/home/anas/shop/tryExtendPHP4.3.3/include
++ echo X-DPHP_ATOM_INC
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" ""'
+ base_compile="" "" "" ""
+ lastarg=-I/home/anas/shop/tryExtendPHP4.3.3/include
+ srcfile=-I/home/anas/shop/tryExtendPHP4.3.3/main
++ echo X-I/home/anas/shop/tryExtendPHP4.3.3/include
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" ""'
+ base_compile="" "" "" "" ""
+ lastarg=-I/home/anas/shop/tryExtendPHP4.3.3/main
+ srcfile=-I/home/anas/shop/tryExtendPHP4.3.3
++ echo X-I/home/anas/shop/tryExtendPHP4.3.3/main
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" ""'
+ base_compile="" "" "" "" "" ""
+ lastarg=-I/home/anas/shop/tryExtendPHP4.3.3
+ srcfile=-I/usr/local/include/php
++ echo X-I/home/anas/shop/tryExtendPHP4.3.3
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" ""
+ lastarg=-I/usr/local/include/php
+ srcfile=-I/usr/local/include/php/main
++ echo X-I/usr/local/include/php
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" ""
+ lastarg=-I/usr/local/include/php/main
+ srcfile=-I/usr/local/include/php/Zend
++ echo X-I/usr/local/include/php/main
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" ""
+ lastarg=-I/usr/local/include/php/Zend
+ srcfile=-I/usr/local/include/php/TSRM
++ echo X-I/usr/local/include/php/Zend
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" "" ""
+ lastarg=-I/usr/local/include/php/TSRM
+ srcfile=-DHAVE_CONFIG_H
++ echo X-I/usr/local/include/php/TSRM
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" "" "" ""
+ lastarg=-DHAVE_CONFIG_H
+ srcfile=-g
++ echo X-DHAVE_CONFIG_H
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" "" "" "" ""
+ lastarg=-g
+ srcfile=-O2
++ echo X-g
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" "" "" "" "" ""
+ pic_mode=yes
+ continue
+ lastarg=-O2
+ srcfile=-c
++ echo X-O2
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" "" "" "" "" "" ""
+ lastarg=-c
+ srcfile=/home/anas/shop/tryExtendPHP4.3.3/my_ext.c
++ echo X-c
++ -e '1s/^X//' -e 's/\([\\`\\"$\\\\]\)/\\\1/g'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ lastarg=
+ lastarg=""
+ test -z '"" "" "" "" "" "" "" "" "" "" "" "" "" ""'
+ base_compile="" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
+ test no '!=' no
+ user_target=next
+ user_target=yes
+ continue
+ user_target=set
+ libobj=my_ext.lo
+ continue
+ xform=[cCFSfmso]
++ echo Xmy_ext.lo
++ -e '1s/^X//' -e 's/\.[cCFSfmso]$/.lo/'
/home/anas/shop/tryExtendPHP4.3.3/libtool: -e: command not found
+ libobj=
+ echo ': compile: cannot determine name of library object from `'\'''
: compile: cannot determine name of library object from `'
+ exit 1
make: *** [my_ext.lo] Error 1
Curt Zirzow wrote:
* Thus wrote Anas Mughal ([EMAIL PROTECTED]):
I have followed the instructions in the PHP documentation on how to build a custom dynamic extension. After running ext_skel, I did NOT add any custom methods. I built the extension using the followind commands:
Compiling cc -fpic -DCOMPILE_DL=1 -I/usr/local/include -I. -I.. -I../Zend -c -o <your_object_file> <your_c_file>
Linking cc -shared -L/usr/local/lib -rdynamic -o <your_module_file> <your_object_file(s)>
1. edit the config.m4 and remove the dnl's on the lines that look somethign like: dnl PHP_ARG_ENABLE(baz, whether to enable baz support, dnl Make sure that the comment is aligned: dnl [ --enable-baz Enable baz support])
2. ./phpize
Creates the configure environment
3. ./configure --enable-baz 4. make 5. make install
the make install just copies the file in the modules/ dir to your php module directory.
HTH,
Curt
srcdir = /home/anas/shop/tryExtendPHP4.3.3
builddir = /home/anas/shop/tryExtendPHP4.3.3
top_srcdir = /home/anas/shop/tryExtendPHP4.3.3
top_builddir = /home/anas/shop/tryExtendPHP4.3.3
SHLIB_SUFFIX_NAME = so
shared_objects_my_ext = my_ext.lo
PHP_MODULES = $(phplibdir)/my_ext.la
all_targets = $(PHP_MODULES)
install_targets = install-modules
prefix = /usr/local
exec_prefix = $(prefix)
libdir = ${exec_prefix}/lib
prefix = /usr/local
phplibdir = /home/anas/shop/tryExtendPHP4.3.3/modules
PHP_COMPILE =
CC = gcc
CFLAGS = -g -O2
CFLAGS_CLEAN = -g -O2
CPP = gcc -E
CPPFLAGS = -DHAVE_CONFIG_H
CXX =
DEFS =
EXTENSION_DIR = /usr/local/lib/php/extensions/no-debug-non-zts-20020429
EXTRA_LDFLAGS =
EXTRA_LIBS =
INCLUDES = -I/usr/local/include/php -I/usr/local/include/php/main
-I/usr/local/include/php/Zend -I/usr/local/include/php/TSRM
LEX =
LEX_OUTPUT_ROOT =
LFLAGS =
LDFLAGS =
SHARED_LIBTOOL =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
SHELL = /bin/sh
AWK = gawk
mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
INSTALL = $(top_srcdir)/build/shtool install -c
INSTALL_DATA = $(INSTALL) -m 644
DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
all: $(all_targets)
@echo
@echo "Build complete."
@echo "(It is safe to ignore warnings about tempnam and tmpnam)."
@echo
build-modules: $(PHP_MODULES)
libphp4.la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir)
$(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
$(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
[EMAIL PROTECTED](LIBTOOL) --silent --mode=install cp libphp4.la
$(phptempdir)/libphp4.la >/dev/null 2>&1
libs/libphp4.bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
$(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS)
$(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS)
$(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp4.so
install: $(all_targets) $(install_targets)
install-sapi: $(OVERALL_TARGET)
@echo "Installing PHP SAPI module: $(PHP_SAPI)"
[EMAIL PROTECTED](mkinstalldirs) $(INSTALL_ROOT)$(bindir)
[EMAIL PROTECTED] test ! -r $(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME); then \
for i in 0.0.0 0.0 0; do \
if test -r $(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME).$$i;
then \
$(LN_S) $(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME).$$i
$(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME); \
break; \
fi; \
done; \
fi
@$(INSTALL_IT)
install-modules: build-modules
@test -d modules && \
$(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR) && \
echo "Installing shared extensions: $(INSTALL_ROOT)$(EXTENSION_DIR)/" && \
rm -f modules/*.la && \
$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR) >/dev/null 2>&1 || true
install-tester:
@echo "Installing regression tester: $(INSTALL_ROOT)$(PEAR_INSTALLDIR)/"
@$(mkinstalldirs) $(INSTALL_ROOT)$(PEAR_INSTALLDIR)
@$(INSTALL) -m 755 $(top_srcdir)/run-tests.php
$(INSTALL_ROOT)$(PEAR_INSTALLDIR)
install-su: install-pear install-tester
test:
[EMAIL PROTECTED] test -x $(SAPI_CLI_PATH) && test ! -z $(SAPI_CLI_PATH); then
\
TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \
TEST_PHP_SRCDIR=$(top_srcdir) \
CC="$(CC)" \
$(top_builddir)/$(SAPI_CLI_PATH) -d 'open_basedir=' -d
'safe_mode=0' -d 'output_buffering=0' $(top_srcdir)/run-tests.php $(TESTS); \
else \
echo "ERROR: Cannot run tests without CLI sapi."; \
fi
clean:
find . -name \*.lo | xargs rm -f
find . -name \*.o | xargs rm -f
find . -name \*.la | xargs rm -f
find . -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp4.la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/*
distclean: clean
rm -f config.cache config.log config.status Makefile.objects
Makefile.fragments libtool main/php_config.h stamp-h php4.spec
sapi/apache/libphp4.module buildmk.stamp
egrep define'.*include/php' configure|sed 's/.*>//'|xargs rm -f
find . -name Makefile | xargs rm -f
.PHONY: all clean install distclean test
.NOEXPORT:
my_ext.lo: /home/anas/shop/tryExtendPHP4.3.3/my_ext.c
$(LIBTOOL) --debug --mode=compile $(CC) -I.
-I/home/anas/shop/tryExtendPHP4.3.3 $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)
-prefer-pic -c /home/anas/shop/tryExtendPHP4.3.3/my_ext.c -o my_ext.lo
$(phplibdir)/my_ext.la: ./my_ext.la
$(LIBTOOL) --mode=install cp ./my_ext.la $(phplibdir)
./my_ext.la: $(shared_objects_my_ext) $(MY_EXT_SHARED_DEPENDENCIES)
$(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)
$(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath
$(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_my_ext) $(MY_EXT_SHARED_LIBADD)
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php

