note 63458 added to install.windows.building
| From: | luraschigabriel#gmail dot com at osu1 dot php dot net | Date: | Wed, 22 Mar 2006 17:59:46 +0000 |
| Subject: | note 63458 added to install.windows.building | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-106289@lists.php.net to get a copy of this message | ||
Logré compilar una extensión para PHP.
Voy a explicar paso por paso cómo lo hice.
Aquà hay material que saqué de otros sitios como PHP.NET, zend.com y devnewz.com.
Yo tengo instalado Apache 1.3 y PHP 4.4.1 como servicios en la plataforma NT.
Primero que nada voy a mencionar las herramientas que utilizé para hacer esto:
* Microsoft Visual C++ 6.0
* Código fuente de PHP descargado de http://ar.php.net/get/php-4.x.x.tar.gz/from/a/mirror
Los principales pasos los obtuve de:
http://www.devnewz.com/2002/0909.html y el
código en C de:
http://www.zend.com/php/internals/ex...6&open=1#notes
Aunque hice algunas modificaciones al código para que funcione correctamente.
==============================
1. Archivos necesarios.
1.1 Descargar el código fuente de PHP (deben descargar el código fuente que corresponda a la
versión de PHP para la que quieran hacer la extensión), en mi caso la versión 4.4.1.
1.2 Descomprimir el código fuente en una carpeta, por ejemplo C:\PHP\Source\.
2. Configuración inicial.
2.1 Abrir MS VC++ 6.0 y en el menú File seleccionar New.
2.2 En el asistente para un nuevo proyecto seleccionar el tipo de proyecto Win32 Dynamic-Link
Library.
2.3 En la casilla de nombre de proyecto escriban el nombre de la librerÃa que van a crear, por
ejemplo "hello".
2.4 En la casilla de ubicación del proyecto escriban el path hacia la carpeta "ext"
dentro del directorio en donde descomprimieron el código fuente de PHP.
2.5 La opción Win32 que está debajo de "Plataforas" yo la dejé tildada, no sé
en qué afectará esto a la extensión creada.
2.6 Una vez establecido todo esto hay que dar click en Ok, en la próxima ventana del asistente
hay que dajar tildado "An empty DLL proyect" y dar click en Finish, aparecerá otra
ventana de confirmación, hagan click en Ok.
3. Configuración de compilación.
3.1 Hagan click en Proyect -> Configurations y en la ventana que se abre seleccionen "Config
for" Win32 Release, después seleccionen la solapa "C/C++" y la categorÃa
"General". Agreguen las definiciones del preprocesador siguientes:
ZEND_DEBUG=0,COMPILE_DL_HELLO,ZTS=1,ZEND_WIN32,PHP _WIN32.
Pueden ver una imagen aquÃ: http://images.ientrymail.com/phpc_2.gif.
3.2 Seleccionen la categorÃa "Code Generation" y cambien la propiedad "run-time
Library" a "Multithreaded DLL".
3.3 En la categorÃa "Preprocessor" agreguen la siguiente cadena al campo
"Additional include directories":
..\..,..\..\main,..\..\Zend,..\..\TSRM,..\..\win32 .
Estos directorios son relativos a la ubicación del proyecto con respecto a la ubicación del
código fuente de PHP, por lo que si cambian alguna de estas ubicaciones van a necesitar modificar
esta directiva.
3.4 En la solapa Link y en la categorÃa General cambien el nombre del archivo DLL de salida a
php_hello.dll, esto puede ser omitido pero debido a que es una norma que las extensiones de PHP en
Windows tengan el prefijo php_, deberÃamos hacerlo asÃ.
3.5 En el campo "Object/library modules" agregen php4ts.dll.
3.6 En la categorÃa "Input" agreguen a "Additional library path" la cadena
siguiente: Release
3.7 Den click en Ok para confirmar los cambios.
3.8 Dentro de "Build" hagan click en "Set active configuration", seleccionen
Win32 Release y hagan click en Ok.
3.9 Debido a que PHP fue contruido en el lenguaje C, serÃa un error escribir código en C++
para esta extensión, por lo que es conveniente agregar la directiva /Tc en el campo "Proyect
Options" dentro de la categorÃa "Preprocessor" en la solapa "C/C++" en
la misma ventana de configuración que se mencionó anteriormente. Asegurense de que esté
activado el campo "Win32 Release" en "Config for" de la misma ventana. Se puede
ver el ejemplo aquÃ: http://images.ientrymail.com/phpc_4.gif.
Si llegaron bien hasta aquà es porque tienen todo bien configurado para empezar a escribir
código en C y crear una extensión para PHP.
Continúa...
----
Server IP: 66.163.161.117
Probable Submitter: 200.82.56.174
----
X-Spam-Status: Yes, hits=7.4 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER,
HEAD_ILLEGAL_CHARS autolearn=no version=2.64
----
Manual Page -- http://www.php.net/manual/en/install.windows.building.php
Edit -- http://master.php.net/note/edit/63458
Del: integrated -- http://master.php.net/note/delete/63458/integrated
Del: useless -- http://master.php.net/note/delete/63458/useless
Del: bad code -- http://master.php.net/note/delete/63458/bad+code
Del: spam -- http://master.php.net/note/delete/63458/spam
Del: non-english -- http://master.php.net/note/delete/63458/non-english
Del: in docs -- http://master.php.net/note/delete/63458/in+docs
Del: other reasons-- http://master.php.net/note/delete/63458
Reject -- http://master.php.net/note/reject/63458
Search -- http://master.php.net/manage/user-notes.php