| [ WWW ] in KIDS 글 쓴 이(By): wgchoe (D-147) 날 짜 (Date): 1997년07월18일(금) 00시44분25초 KDT 제 목(Title): Re: wgchoe님....(about lynx compile....) 음.. 아주 이상한 일이군요.. 왜그럴까. 일단 wattroff 가 쓰이는 곳은, LYCurses.h 의 라인 104 를 보면 이게 다른 걸로 디파인 이 되어 있읍니다. #define start_reverse() wattrset(stdscr,A_DIM) #define wstart_reverse(a) wattrset(a,A_DIM) #define stop_reverse() wattroff(stdscr,A_DIM) #define wstop_reverse(a) wattroff(a,A_DIM) #else #define start_reverse() attrset(A_REVERSE) #define wstart_reverse(a) wattrset(a,A_REVERSE) #define stop_reverse() attroff(A_REVERSE) #define wstop_reverse(a) wattroff(a,A_REVERSE) 즉, stop_reverse 와 wstop_reverse 가 wattroff 로 정의가 되어 있구요, 이건 다시 /usr/include/curses.h 를 보면, wattroff 가 w32attrof 로 정의가 되어 있습니다. 즉, 제일 먼저 curses.h 가 인클루드 되면서 wattroff -> w32attrof 로 되고, 그리고 LYClean.h 가 들어 오면서 stop_reverse -> wattroff -> w32attroff 로 되는거죠. 그러니까, 사실은 w32attroff 라는 함수를 불러야 하는데.. 그런데 왜 wattr_off 를 부를까.. grep 으로 찾아 보면, stop_reverse 는 LYForms.c, LYLocal.c, LYUtils.c 등 여러개의 파일에서 쓰입니다. .. 만약 헤더 파일의 문제라면, 이 소스 들에선 전부 stop_reverse 를 wattr_off 라고 잘못 알아 먹겠죠. 그럼.. 이렇게 한번. foreach file (*.o) echo $file nm $file | grep wattr end 이렇게 하면 어떤 파일에 wattr_off 가 링크 되나 알 수 있을겁니다. 이것을, stop_reverse(또는 wstop_reverse) 가 들어 있는 파일의 이름과 비교 해 보세요. 또하나는, 매크로의 잘못 이라면, 다음과 같이 해 보시죠. 1. LYClean.o 를 지운다. 2. 위에 가서 make solaris2 를 한다 (물론 실패한다) 3. src 로 가서, make 에서 나온 컴파일 커맨드를 따서, gcc -g 를 gcc -E 로 바꾼다. (pre-processing 만 하는겁니다.) 뒤의 -o LYClean.o 도 없애고, 아웃ㅗ� 을 다른 파일에 받는다. 제 컴 에서는, gcc -E -DFANCY_CURSES -DUNIX -DSOLARIS2 -I../WWW/Library/Implementation -DCURS_PERFORMANCE -DNO_UTMP -DUSE_DIRENT -I.. -c LYClean.c > aaa.c 4. aaa.c 에 가서, 도대체 어디에 wattr_off 가 나오나 본다. 라인 넘보가 있으니 원래 소스와 비교 해 본다. 음... 그럼 한번 해 보세요.. |