티스토리 뷰

gethostbyname() 함수 몸통을 좀 수정 할 일이 있어서 glibc를 빌드 하는데,

configure에서 발생되는 에러입니다.

 

configure: error: you must configure in a separate build directory

 

직역하면 반드시 다른 디렉토리에서 configure하라는 뜻인데 아래와 같은 방법으로 해결 하도록 합니다.

 

$mkdir test

$cd test

$../configure

checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
configure: running configure fragment for add-on nptl
checking sysdep dirs... sysdeps/i386/elf nptl/sysdeps/unix/sysv/linux/i386/i686 nptl/sysdeps/unix/sysv/linux/i386 sysdeps/unix/sysv/linux/i386 nptl/sysdeps/unix/sysv/linux nptl/sysdeps/pthread sysdeps/pthread sysdeps/unix/sysv/linux sysdeps/gnu sysdeps/unix/common sysdeps/unix/mman sysdeps/unix/inet sysdeps/unix/sysv/i386 nptl/sysdeps/unix/sysv sysdeps/unix/sysv sysdeps/unix/i386 nptl/sysdeps/unix sysdeps/unix sysdeps/posix sysdeps/i386/i686/fpu nptl/sysdeps/i386/i686 sysdeps/i386/i686 sysdeps/i386/i486 nptl/sysdeps/i386/i486 sysdeps/i386/fpu nptl/sysdeps/i386 sysdeps/i386 sysdeps/wordsize-32 sysdeps/ieee754/ldbl-96 sysdeps/ieee754/dbl-64 sysdeps/ieee754/flt-32 sysdeps/ieee754 sysdeps/generic/elf sysdeps/generic
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for gcc... gcc
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
checking for g++... g++

....

....

생략

 

$make (../configure 명령어를 실행 시킨 디렉토리에서 make 하도록 한다.)

 

개발자도 영어 잘~ 해야 하는 시대입니다.. 쩝 (아니 정말 최소한의 영어라도)

 

 

 

glibc download path : 여기

 

 

 

 

추가

 

리눅스의 libc.so는 표준 C라이브러리를 모듈화 한 파일입니다.

이는 정적으로 프로그램이 컴파일 되면 왠만한건 모두 libc.so를 참조한다는 뜻이기 때문에

파일을 자칫 잘못 건들이면 서버가 비정상 동작을 할 여지가 다분합니다.

검색사이트에서 관련 내용을 검색 했을 때 출력되는 내용들을 잠시 살펴보면..

libc.so 파일을 잘못 건들여서 발생한 문제는 라이브CD를 넣고 부팅하는 방법 밖에 없다는 내용만.. 가득합니다.

(물론 검색해서 나오는 내용은 누가 퍼트린 내용인지는 모르겠지만, 다 Ctrl+C Ctrl+V 내용입니다)

 

ldd 명령을 통해 ls 나 cp, ln 같은 리눅스 기본 명령어를 살펴봐도 모두 libc.so를 사용한다는 것을 알 수 있습니다.

(물론 정적 라이브러리를 참조하도록 코딩하면 회피할 수 있지만 그리 좋은 방법만은 아닙니다.)

 

여튼 libc.so 파일을 수정할 일이 있다면 주의. 또 주의하도록 합시다.

 

댓글
댓글쓰기 폼