[완료] qpopper4.0.9 make 에러
안녕하세요.
메일 서버 테스트를 위해서 qpopper를 설치하던 중 make 에러가 발생했는데요.
열심히 구글링을 해 봐도 해답을 찾지 못해서 이렇게 질문까지 하게 되었습니다.
우선, 제가 참고한 사이트는 http://www.linuxfromscratch.org/blfs/view/svn/server/qpopper.html 입니다.
여기서 Qpopper-4.0.9 소스 컴파일 튜토리얼을 열심히 따라하는데 make 에러가 발생했구요.
configure 옵션과 에러 내용은 다음과 같습니다.
(*참고로 os는 fedora14 입니다.)
-----------------------------------------------------------------------------------------------
[root@mail qpopper4.0.9]# ./configure --prefix=/usr --enable-standalone && make
...(생략)...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating common/Makefile
config.status: creating popper/Makefile
config.status: creating mmangle/Makefile
config.status: creating password/Makefile
config.status: creating config.h
config.status: config.h is unchanged
cd ./popper && make all
make[1]: Entering directory `/usr/local/src/qpopper4.0.9/popper'
gcc -c -I.. -I.. -I. \
-I../mmangle -I../common \
-g -O2 -DHAVE_CONFIG_H -DLINUX -DUNIX popper.c -o popper.o
popper.c: In function ‘qpopper’:
popper.c:153:25: error: conflicting types for ‘getline’
/usr/include/stdio.h:673:20: note: previous declaration of ‘getline’ was here
popper.c: In function ‘tgetline’:
popper.c:617:9: warning: passing argument 1 of ‘getline’ from incompatible pointer type
/usr/include/stdio.h:673:20: note: expected ‘char ** __restrict__’ but argument is of type ‘char *’
popper.c:617:9: warning: passing argument 2 of ‘getline’ makes pointer from integer without a cast
/usr/include/stdio.h:673:20: note: expected ‘size_t * __restrict__’ but argument is of type ‘int’
popper.c:617:9: warning: passing argument 3 of ‘getline’ from incompatible pointer type
/usr/include/stdio.h:673:20: note: expected ‘struct FILE * __restrict__’ but argument is of type ‘struct POP *’
popper.c:617:13: warning: assignment makes pointer from integer without a cast
make[1]: *** [popper.o] Error 1
make[1]: Leaving directory `/usr/local/src/qpopper4.0.9/popper'
make: *** [popper_server] Error 2
[root@mail qpopper4.0.9]#
-----------------------------------------------------------------------------------------------
저와 같은 에러가 발생했던 사람의 글을 확인했는데요.
솔라리스에서 발생한 에러이긴 하지만 같은 에러라서 참고해 봤습니다.
http://support.moonpoint.com/network/email/qpopper/qpopper4-0-16.php
어떻게 해결했는지 그 내용을 잘 모르겠습니다.
getline원형하고 실제사용하고 틀려서 그런거 같은데여.
getline을 stdio.h에 있는거 참고해서
소스를 고쳐야 할거 같은데여
즐린
그렇군요.
감사합니다. ^^
오래된 qpopper 버젼을 사용하시네요. 물론
오래된 qpopper 버젼을 사용하시네요.
물론 인터넷에 있는 강좌가 특정 버젼을 기초로 쓰여진 까닭이겠죠.
쉬운 해결책은 최신 버젼을 사용하시는 겁니다.
http://ftp.yz.yamagata-u.ac.jp/pub/network/qpopper/qpopper4.0.19.tar.gz
나
http://ftp.ticklers.org/pub/qpopper/beta/qpopper4.1b18.tar.gz
꼭 qpopper4.0.9.tar.gz 버젼을 써야겠다 하시면
표준 c 라이브러리 getline과 혼동되지 않게 다른 이름으로 바꾸어 주셔야 합니다.
실제로 최신버젼들은 바로 위 패치가 이미 적용되어 있습니다.
위 코드를 편집기로 저장하시거나 아래 첨부파일을 받으셔서 패치하시면 됩니다.
$ cp qpopper-getline.patch qpopper4.0.9
$ cd qpopper4.0.9
[qpopper4.0.9]$ patch -p0 < qpopper-getline.patch
patching file qpopper4.0.9/popper/popper.c
..
친절한 답변 감사합니다. ^^
그런 문제가 있었군요...
이런 오류가 없었으면 모르고 그냥 지나칠뻔 했는데 잘 알려주셔서 감사합니다.
바로 테스트 해보죠~
좋은 하루 되세요.
댓글 달기