Article View: de.comp.lang.php
Article #4hilfe: extensions als .SO
From: Herbert Rosmanith
Date: Fri, 16 Feb 2001 14:36
Date: Fri, 16 Feb 2001 14:36
76 lines
3733 bytes
3733 bytes
hi,
ich versuche schon seit einiger zeit, eine php-extension zu
schreiben. das ist mir zwar gelungen, allerdings nur als
statisch gelinkte verison. ich haette aber gerne, um die
entwicklung zu beschleunigen (relinken von php braucht seine
zeit) dieses modul auch als .so bzw. dynamisch gelinkt.
obwohl ich mich strict an die anweisungen, die auf www.zend.com
stehen und die, die man erhaelt, wenn man das "ext_skel" aus-
fuehrt, gehalten habe, komme ich nicht weiter.
software: apache-1.3.14, php-4.0.4, als source, selbst compiled,
platform ist linux.
weder mit der automatischen installation noch mit der manuellen
installtion (according to www.zend.com) komme ich weiter:
automatisch:
1) modul-subdir in ~/php-4.0.4/ext erstellen.
2) config.m4 anpassen: "PHP_ARG_WITH" ist eingestellt.
3) buildconf laufen lassen
4) sh configure --with-<mein-modul>
5) make
nach schritt 5) erhalte ich in ~/php-4.0.4 ein php-binary,
in dem nsparse anscheinend schon statisch gelinkt ist:
blau:~/php-4.0.4 # ldd php
libpam.so.0 => /lib/libpam.so.0 (0x40018000)
libdl.so.2 => /lib/libdl.so.2 (0x40020000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40023000)
libm.so.6 => /lib/libm.so.6 (0x40032000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40050000)
libnsl.so.1 => /lib/libnsl.so.1 (0x4007d000)
libc.so.6 => /lib/libc.so.6 (0x40093000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
blau:~/php-4.0.4 # strings php| grep nsparse
php_info_nsparse
...
nsparse
confirm_nsparse_compiled
...
also stimmt da schon mal was nicht.
auch die manuelle installtion funktioniert nicht:
: http://www.zend.com/...
: Zend / Zend API Documentation / Extending PHP 4.0 / Creating Extensi (p7 of 9)
: Compiling Manually. To compile your modules manually, you need the
: following 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)>
wenn ich "cc -shared -rdynamic -o nsparse.so *.o" eingebe und diese
modul in das htdocs verzeichnis stelle, dann bekomme ich beim aufruf
von ``dl("nsparse.so")'' folgenden fehler:
Warning: Invalid library (maybe not a PHP library) 'nsparse.so' in
/root/public_html/t-zone.php on line 2
pfuh. ich kaempfe schon seit 2 tagen mit diesem problem herum.
kann mir jemand sagen, wie man eine dynamisch gelinkte php-extension
erzeugen kann, sodass sie zur laufzeit mit dl() geladen werden
kann?
danke im voraus,
herbert
Technical Details
Message-ID:
<3a8d3ae6@alijku02.edvz.uni-linz.ac.at>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!newscore.gigabell.net!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!ictas.tu-graz.ac.at!newsfeed.Austria.EU.net!newsfeed.kpnqwest.at!newsfeed.wu-wien.ac.at!aconews.univie.ac.at!alijku02.edvz.uni-linz.ac.at!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: 10f92b,36f62c89c720867,start X-Google-Attributes: gid10f92b,public X-Google-Thread: 1101c9,36f62c89c720867,start X-Google-Attributes: gid1101c9,public X-Google-ArrivalTime: 2001-02-16 06:38:04 PST From: Herbert Rosmanith <herp@wildsau.idv.uni-linz.ac.at> Subject: hilfe: extensions als .SO Newsgroups: de.comp.lang.php,at.linux Organization: private site User-Agent: tin/pre-1.4-971106 (UNIX) (Linux/2.2.17 (i586)) NNTP-Posting-Host: wildsau.idv-edu.uni-linz.ac.at Message-ID: <3a8d3ae6@alijku02.edvz.uni-linz.ac.at> Date: 16 Feb 2001 15:36:22 +0100 X-Trace: 16 Feb 2001 15:36:22 +0100, wildsau.idv-edu.uni-linz.ac.at Lines: 78 Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!newscore.gigabell.net!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!ictas.tu-graz.ac.at!newsfeed.Austria.EU.net!newsfeed.kpnqwest.at!newsfeed.wu-wien.ac.at!aconews.univie.ac.at!alijku02.edvz.uni-linz.ac.at!not-for-mail