smurf's work diary..

Adventures of Bilbo Baggins

php-extension 에서 mysql 컴파일시 오류 해결

2008/11/07 11:11  |   분류없음  |   스머프

centos-5.2 에서 김정균씨의 php-extension 을 컴파일시에 mysql 모듈에서

컴파일 오류가 발생한다.

원인을 찾던 중  sys/types.h 에 원인의 해결책이 있었다.

#ifndef __gid_t_defined
typedef __gid_t gid_t;
# define __gid_t_defined
#endif


#ifndef __uid_t_defined
typedef __uid_t uid_t;
# define __uid_t_defined
#endif


위의 내용이 있다.

gid_t 는 __gid_t 로 정의가 되어 있다.

그러나, mysql 모듈에서 자체적으로 uid_t, gid_t 가 매크로로 정의가 되어있다.

결국은 2중 매크로 정의로 인해서 오류가 발생한 것이었다.

해결 방법은

spec 파일에서 -D__uid_t_defined    -D__gid_t_defined 를 추가 정의 해 준다.

위의 2개를 정의 해 줌으로써, sys/types.h 에 있는 매크로 정의는 생략되어,

2중 매크로의 적용이 되지 않는다.

크리에이티브 커먼즈 라이센스
Creative Commons License

php 에서 괜찮은 매크로.

2008/02/25 19:52  |   분류없음  |   스머프
아래는 php 에서 사용하는 괜찮은 매크로 임.


#define SKIP_LONG_HEADER_SEP(str, pos)                                     
    if (str[pos] == 'r' && str[pos + 1] == 'n' && (str[pos + 2] == ' ' || str[pos + 2] == 't')) {   
        pos += 3;                                          
        while (str[pos] == ' ' || str[pos] == 't') {                          
            pos++;                                         
        }                                              
        continue;                                          
    }                 

문자열에서 공백이나 탭문자를 제거해줌.

사용법)
SKIP_LONG_HEADER(검색할 문자열, 문자의 위치값);
크리에이티브 커먼즈 라이센스
Creative Commons License
php

php에서 함수 호출시에

2008/02/25 19:51  |   분류없음  |   스머프
php 에서 php 함수를 호출시에

php 함수 호출 -> zend 에서 인자 체크 ->  인자 넘겨 받기(Zend/Zend_API.c) -> 해당 wrapper 함수 호출의 순으로 처리됨.
크리에이티브 커먼즈 라이센스
Creative Commons License
php