SommaireTelecharger la documentationChapitre suivantChapitre precedent  

  .: News :.: Edito :.: Scripts :.: Forum :.: Erreurs :.: Jobs :. 
 
Sommaire

Créer une extension

Compiler un module

7.6.1 Compiler un module

Il y a deux méthodes pour compiler les modules:

  • Utilisez le mécanisme de "make", présent dans le dossier ext , qui permet la compilation de module dynamiquement chargeable.

  • Compilez les sources manuellement

La première méthode doit toujours être privilégiée, car, depuis PHP 4.0, cela a été standardisé. Un système de compilation sophistiqué a été introduit. Cette sophistication a aussi ses inconvénients, malheureusement : elle est difficile à aborder. Nous allons fournir une introduction plus détaillée plus tard dans ce chapitre, mais commençons par regarder le fonctionnement par défaut des fichiers.

La seconde méthode est valable pour ceux qui (pour diverses raisons), n'ont pas accès au code source complet de PHP, n'ont pas accès du tout aux sources, ou qui aiment se battre avec leur clavier. Ces cas doivent rester exceptionnel. Pour être vraiment exhaustif, nous allons aussi décrire cette méthode.

Pour compiler notre code source example avec le mécanisme standard, copiez tous les sous dossiers de ext dans votre distribution PHP. Puis, exécutez le fichier buildconf , qui va créer un script configure mis à jour, avec les options appropriées pour les nouvelles extensions. Par défaut, toutes les extensions sont désactivez. Nous n'avez pas à avoir de crainte de perturber votre compilation.

Avec avoir exécuté buildconf , configure --help affiche les modules supplémentaires suivants :

  --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é un peu plus tôt dans Une extension simple peut être activé avec --enable-first_module ou --enable-first_module=yes.

Pour compiler manuellement vos modules, 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> <votre_fichier_c>
Linking cc -shared -L/usr/local/lib -rdynamic -o <votre_fichier_de_module> <vos_fichier(s)_objet(s)>
La commande de compilation du module indique simplement au compilateur de générer du code position-independent (-fpic ne doit pas être oublié) et de plus, définit la constante COMPILE_DL pour indiquer au code du module qu'il est compilé comme un module dynamiquement chargeable (le module de test ci-dessus effectue les tests pour cela; nous en reparlerons prochainement). Après ces options, il spécifie un ensemble de chemin d'inclusions qui doivent être utilisé comme liste minimum de chemins.

Note:  Tous les chemins d'inclusion de notre exemple sont relatifs au dossier ext . Si vous compilez dans un autre dossier, changez les chemins de manière adéquate. Les chemins nécessaires sont le dossier PHP, le dossier Zend , et (si nécessaire), le dossier de votre module.

La commande de link est aussi une commande sur mesure pour linker le module comme module dynamiquement chargeable.

Vous pouvez inclure les options d'optimisation dans la commande de compilation, même si elles ont été omises dans notre exemple (mais certaines sont inclues dans le makefile d'exemple, décrit plus tôt dans ce chapitre).

Note:  Compiler et linker manuellement sous forme de module dynamique dans un binaire PHP implique de très longues insctructions, et ne sera pas décrit ici (ce n'est pas très efficace de taper toutes ces commandes).


Chapitre précédentChapitre suivantAccueil nexen.net