1. 준비
개발용 PC
- Visual C++
- Apache, PHP
- PuTTY
VM Player (GuestOS = Linux)
- autoconf, gcc 등의 개발도구
- Apache, PHP
- PHP 소스파일들
- SSH, Samba (HostOS와 GuestOS 연결)
2. Host-Guest 연결
- Linux의 Samba를 통해 네트워크 드라이브를 잡는다.
- PuTTY를 이용해 SSH 접속.
3. 프로젝트 세팅
- Linux의 PHP_SOURCE/ext 에서 ext_skel을 이용해 extension skeleton을 하나 생성. (메인소스는 .c 파일임)
- Visual C++의 DLL 프로젝트의 경로를 Linux에서 생성한 extension skeleton으로 잡아 똑같은 이름의 프로젝트 생성.
- Visual C++의 라이브러리 경로 등을 전부 네트워크 드라이브로 연결된 Linux쪽 PHP_SOURCE 경로로 설정
- Visual C++ 프로젝트에서 생성된 cpp 파일을 제거
- Linux의 .c 메인소스의 확장자를 .cpp 로 변경하고 config.m4 에서도 .cpp 로 변경.
- Visual C++의 프로젝트에서 위에서 .cpp 로 변경한 메인소스를 추가.
- 양쪽 프로젝트 모두 "stdafx.h" 를 include 하도록 하며 차이점은 #ifdef PHP_WIN32 로 세팅함.
4. 스크립트 준비
- PuTTY 명령입력 프로그램 다운로드 후 어딘가에 저장
SendPutty.exe 는 현재 실행 중인 모든 PuTTY를 뒤져서 첫번째 파라메터로 받은 문자열이 캡션에 있으면 두번째 파라메터의 명령어를 입력하는 프로그램
- Linux 용 스크립트 (build.sh)
#!/bin/sh
/usr/local/apache/bin/apachectl stop ;
cd /PHP_SOURCE/ext/EXTENSION_DIR ;
make clean ;
phpize ;
./configure --with-php-config=/usr/local/php/bin/php-config --enable-EXTESNION_NAME ;
make ;
rm -rf /PHP_EXTENSION_PATH/EXTENSION_NAME.so ;
cp ./modules/EXTENSION_NAME.so /PHP_EXTENSION_PATH/ ;
/usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl stop ;
cd /PHP_SOURCE/ext/EXTENSION_DIR ;
make clean ;
phpize ;
./configure --with-php-config=/usr/local/php/bin/php-config --enable-EXTESNION_NAME ;
make ;
rm -rf /PHP_EXTENSION_PATH/EXTENSION_NAME.so ;
cp ./modules/EXTENSION_NAME.so /PHP_EXTENSION_PATH/ ;
/usr/local/apache/bin/apachectl start
- Windows 용 스크립트 (build.bat)
copy "프로젝트경로\Debug\php_모듈명.dll" "C:\PHP_EXTENSION_경로\ext\" /y
"경로\SendPutty.exe" "root@localhost" "SCRIPT_PATH/build.sh"
"경로\SendPutty.exe" "root@localhost" "SCRIPT_PATH/build.sh"
- 위에서 만든 스크립트는 전부 Windows에서 접근이 가능한 네트워크 경로에 두어야 함
5. 빌드
- Visual C++ 프로젝트 설정창 > Build Events > Post-Build Event > Command Line 에서 네트워크경로\build.bat 를 등록
이제 Visual C++ 프로젝트를 빌드하면 Post-Build 에서 스크립트 파일이 돌아가면서 리눅스 쪽도 빌드됨.
'PHP' 카테고리의 다른 글
[PHP Extension] MINIT, MSHUTDOWN, RINIT, RSHUTDOWN (0) | 2010.07.28 |
---|---|
[PHP Extension] 함수 만들기 (Visual C++) (0) | 2010.07.28 |
[PHP Extension] Apache 2.2 + PHP 5.2 + PHP Extension (Linux) (0) | 2010.07.27 |
[PHP Extension] PHP Extension Debugging (Visual C++ 2008) (0) | 2010.07.19 |
[PHP Extension] PHP Extension 만들기 (Visual C++ 2008) (5) | 2010.07.19 |