PHP 컴파일 하는데 오류...
글쓴이: 사랑천사 / 작성시간: 수, 2005/10/05 - 6:57오전
안녕하세요?
이여송 사도요한입니다.
데비안에서 서버를 대강 구축 하고 PHP를 컴파일 하는데 오류가 나네요 음... fork ()함수와 POSIX 함수들을 거의 모두 못 쓰는걸로 나오고 잘 깔려있는 readline아 못 쓰는걸로 나옵니다.
그래서 fork ()함수를 사용한 소스를 간단히 짜 봤는데 정상적으로 컴파일 되고 작동 했습니다 음... 내뇽은 아래와 같습니다.
lanet:~# cat src/c/xxx.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main (void) { int spid; spid = fork (); if (!spid) { printf ("Sub Process:%d (%d)\n", getpid (), getppid ()); } else { printf ("Pre Process:%d (%d)\n", getpid (), spid); } } lanet:~# cd src/c lanet:~/src/c# rm xxx;gcc -o xxx xxx.c lanet:~/src/c# ./xxx Sub Process:30911 (30910) Pre Process:30910 (30911) lanet:~/src/c#
음... 그리고 분명히 /usr/lib/libreadline5.a(맞나)가 잇는데로 readline가 없다고 하고 getgroups 등의 함수들을 모두 못 사용하는걸로 나옵니다. (사용 가능하면 yes가 되어야 하는데 no네요 전부...)
혹시 이게 왜 그런지 아시는분... 계실런지... 이전엔 이런 일이 없었거든요 음... 히얀하군요...
이여송 사도요한 드림.
Forums:
해더파일은 있는지요? readline-devel 혹은 readline-d
해더파일은 있는지요? readline-devel 혹은 readline-dev 등등의 파일을 배포판에 맞게 설치되어 있는지 확인해 보세요.
음.. 문제는!
영 엉뚱한 곳에 답이 있네요... UNIXODBC를 못 쓰게 하니 문제가 해결 되는군요. 그 어떤것도 문제가 없었는데 UNIXODBC때문에 그러네요.. 왜 그러는지는 잘 모르겠지만, 그것만 --with-unixODBC... 요렇게 넣어 주면 탈이 나는군요 음...
사람천사
음... 이번엔 연산 처리가.. 윽!!!
이번엔 연산 처리가 안 되는군요.. 알지보드에 get_password_str 함수입니다. (PHP)내용은 아래와 같고요.
이것이.. 어떤 값을 함수에 줘도 항상 000000000이렇게만 나오는군요... 변함이 없습니다... 이전엔 분명히 잘 되던 함수엿는데... 안 되는군요. 아래에 configure에서 사용한 부분입니다.
음.. 뭐가 문제일까요... 처음엔 --enable-libgcc를 넣었었는데 그게 문제인가 해서 그걸 지우고 해 보기도 했습니다. 음... 별로 문제 될 것이 없어 보이는데 히얀하네요... 아파치에서도, CLI에서도 모두 안 되네요 음...
아무튼... 문제가 있어 보이는 부분 지적 부탁 드립니다.. 음...
사람천사
데비안에서 제공하는 php 패키지의 소스를 받아서 패치까지 적용한 후,
데비안에서 제공하는 php 패키지의 소스를 받아서 패치까지 적용한 후,
데비안에서 하는 컴파일 옵션을 기초로 컴파일을 하는것이 좋을것 같네요.
제가 이런것 때문에 젠투를 써요. :oops:
https://xenosi.de/
Re: 음... 이번엔 연산 처리가.. 윽!!!
설마 연산처리가 안되려구요. 그건 모든 옵션 다 빼더라도 기본적으로 되어야 하는 것 아닌가요..
Re: 음... 이번엔 연산 처리가.. 윽!!!
다른건 다 좋은데.. 요 부분...
요 부분에서 문제가 발생합니다. 디버깅 용으로.
printf ("R:%d, R2:%d\n", $result1, $result2);
이 부분을 sprintf 부분 전에 넣었습니다. 그러니 전부 -21억 어쩌고... (LONG INT에서 +/- 최고값) 흐흠. 그렇게 나오네요...
이상합니다 이거... 이 코드.. New21에선 잘 돌아 가거든요... 근대 왜 그런지... 흠..
아무튼 관심 감사 드립니다.
이여송 사도요한 드림.
사람천사
C로 짜 보니...
C로 돌리니 잘 되는데... 이건 필시 PHP나.. PHP를 컴파일 할 때 사용된 라이브러리들 중의 하나에 문제가 있는것 같은데 뭐가 문제인지 모르겠네요 음...
사람천사
간단한것 같으면서도 모르겠군요.. 아래...
C에서나.. 기타 언어에서 저 알고리즘이 정상적으로 작동하고, 실재로 이전의 PHP에서도 정상 작동 하는것으로 볼 때... 그 원리는 Intger Overflow에 의한 것인데... Long Int이던 Short Int이던 자신의 최고 한도(Short Int:-32767~+32768)를 넘어서면 다시 음수부터 가서 넘어 오게 되는데... PHP에서 오버플로우 되는걸 막아 버린것 같은데... 어쩌면 버그를 이용한 알고리즘이 될지는 몰라도, 억지로 알고리즘에 버그를 넣거나 오버를 만들어서 계산을 하게 되는 경우도 있는걸로 알고 있습니다. 그렇다면, 이걸 꼭 이런식으로 막어서 정상적으로 동작 해야할 알고리즘이 안 돌아 가게 해야 하는건지 모르겠군요.
누가 이거 해제 하는 방법 아시는분... 음... 이것만 알면 될 것 같은데 영 그렇네요 음...
사람천사
댓글 달기