8.5 Créer une extension
8 Développer PHP 4.0
Manuel PHP
. Une extension simple ->Compiler le module
|
8.5.2 Compiler le module
Il y a simplement deux méthodes pour compiler les modules :
-
Utiliser le mécanisme de "make", présent dans le dossier
ext
, qui permet aussi de compiler
les modules chargeables dynamiquement.
- Compiler les sources manuellement.
La première méthode doit toujours être privilégiées, car,
depuis PHP 4.0, un mécanisme standardisé et sophistiqué de
compilation a été mis en place. Le fait qu'il soit sophistiqué
a des inconvénients, malheureusement : il est difficile à comprendre
au premier abord. Nous allons fournir une introduction détaillée
de ce processus utlérieurement, mais commençons par regarder
le fonctionnement avec les fichiers par défaut.
La seconde méthode est bonne pour ceux qui, pour une raison ou une
autre, n'ont pas les sources complètes de PHP sous la main, ou
n'ont pas accès à tous les fichiers, ou qui aiment simplemetn
pianoter sur leur clavier. Ces cas sont extrêmement rare, mais
afin d'être exhaustif, nous allons aussi décrire cette méthode.
Pour compiler le code d'exemple en utilisant le mécanisme
standard, copiez le dossier et tous les sous dossier dans le
dossier
ext
de vos sources PHP. Puis
exécutez le script
buildconf
, qui va
créer une version mise à jour du script
configure
,
avec les options appropriées pour votre extension. Par défaut,
les nouvelles extensions sont désactivées. Comme cela, vous
ne démolirez pas votre script de configuration.
Après avoir exécuté
buildconf
,
configure --help
montre les modules
additionels :
--enable-array_experiments BOOK: Enables array experiments
--enable-call_userland BOOK: Enables userland module
--enable-cross_conversion BOOK: Enables cross-conversion module
--enable-first_module BOOK: Enables first module
--enable-infoprint BOOK: Enables infoprint module
--enable-reference_test BOOK: Enables reference test module
--enable-resource_test BOOK: Enables resource test module
--enable-variable_creation BOOK: Enables variable-creation module
Le module présenté auparavant Une extension simple
peut être activé avec
--enable-first_module
ou
--enable-first_module=yes
.
Pour compiler vos modules manuellement, vous avez besoin des commandes suivantes :
Action |
Commande |
Compiler |
cc -fpic -DCOMPILE_DL=1 -I/usr/local/include -I.
-I.. -I../Zend -c -o
<your_object_file>
<your_c_file>
|
Lier |
cc -shared -L/usr/local/lib -rdynamic -o
<your_module_file>
<your_object_file(s)>
|
La commande pour compiler le module indique simplement au compilateur
de générer du code indépendant des positions (
-fpic
ne doit
pas être omis), et de plus, il définit la constante
COMPILE_DL
qui indique au code du module qu'il est compilé comme module dynamiquement
chargeable (le module de test commence par vérifier cela en premier; nous
en reparlerons plus tard). Après ces options, il spécifie un certain nombre
de chemin d'inclusion qui devraient être utilisés comme liste minimale pour
compiler le tout.
Note:
Tous les chemins d'inclusion dans l'exemple
sont relatifs au dossier
ext
. Si vous compilez
depuis un autre dossier, changez les chemins de manière appropriée.
Les chemins obligatoires sont le dossier PHP, le dossier
Zend, et (si nécessaire) le dossier de votre module.
La commande de liaison est aussi une commande standard de liaison du module
comme module dynamique.
Vous pouvez inclure des options d'optimisation dans la commande de compilation, même
si nous les avons omis dans cet exemple (mais certaines sont inclues dans le
fichier makefile, décrit un peu plus haut).
Note:
Compiler et lier manuellement comme
module statique de PHP implique une liste d'insctructions très
longue, et non discutée ici (ce n'est pas très efficace de
taper toutes ces commandes).
|