Glibc 2를 시험삼아 설치하면, 컴파일 할 때에 특별한 변수를 사용하여 glibc 2에 링킹시키지 않는한 이미 설치되어 있는 기존의 라이브러리에 링킹이 된다. 설치 디렉토리 위치(path)가 몇 파일에 포함되어 컴파일되므로 , 소스로 부터 라이브러리를 설치해야만 한다.
RAM 64 MB인 i586@133 컴퓨터에서 추가 라이브러리(add-ons)포함한 전체 라이브러리 를 컴파일하는데 소요 시간은 약 3시간이며, i686@2에 컴퓨터의 경우는 약 1시간 30분 정도 걸렸다.
소스 파일을 컴파일하기 위해서는 Archives에서 소스 파일을 추출해야만 한다. 아래와 같이 하면 된다:
tar xzf glibc-2.0.5.tar.gz
cd glibc-2.0.5
cat ../glibc-2.0.5-2.0.5c.diff.gz | gzip -d | patch -p0
tar xzf ../glibc-linuxthreads-2.0.5.tar.gz
tar xzf ../glibc-crypt-2.0.5.tar.gz
tar xzf ../glibc-localedata-2.0.5.tar.gz
위의 방법처럼 하면, glibc-2.0.5 디렉토리에 linuxthreads, crypt, localeddata
디렉토리가 생성된다. 이렇게 해야지만 configure가 추가된 라이브러리 디렉토리를
찾을 수 있다.
glibc-2.0.5 디렉토리에서 "compile"이란 디렉토리를 만들고, cd로 'compile' 디렉토리로 온다. 모든 작업은 이 compile 디렉토리에서 이루어진다.
mkdir compile
cd compile
위의 과정을 마쳤으면, '../configure'을 실행시키면 된다. 추가 패키지를 사용하고 싶으면, 추가 패키지에 대한 옵션(--enable-add-ons <예> --enable-add-ons=linuxthreads,crypt,localedata)을 포함시켜야 한다. 또 설치하고 싶은 디렉토리를 선택해야 한다. 보통 설치 디렉토리로 '/usr/i486-linuxglibc2'을 사용한다. 다음은 configure line의 예이다:
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
컴파일하고 제대로 되었는지 확인하는 절차는 다음과 같이 한다:
make
make check
'make check'가 성공적으로 끝났으면, 라이브러리를 설치한다:
make install
ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
This is the only library where the location is fixed once a program
is linked, and using a link in /lib will ease upgrading to glibc as
your primary C library when the stable version is released.
ldconfig -v
설치의 마지막 단계가 /usr/lib/gcc-lib를 업데이트(update)하는 것이다. 이것을 해야지만 gcc가 어떻게 새로운 라이브러리를 사용할지를 알 수 있다. 우선 있는 configuration파일을 복사한다. 현재 configuration의 내용을 알기 위해서는 다음과 같이 하면 된다:
% gcc -v
Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
이 경우는 시스템이 i486-unknown-linux, 2.7.2.2가 버전이다.
당신이 해야할 일은 /usr/lib/gcc-lib/<system> 을 새로운 테스트 시스템
디렉토리로 복사하는 것이다:
복사하는 것이다.:
cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxglibc2
그 다음 다음과 같이 하라.
cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
이 디렉토리에서 'specs'파일을 편집한다. 즉 specs 파일내에 /lib/ld-linux.so.1을
/lib/ld-linux.so.2로 바꾼다. 또 %{...:-lgmon}
가 들어간 모든 문장을
지워라. 왜냐면 glibc는 profile하기 위해서 gmon 라이브러리를 사용하지
않기 때문이다. 샘플 specs 파일은
샘플 specs 파일단원
에서 찾을 수 있다.
헤더 파일 링크는 다음과 같이 한다:
cd /usr/i486-linuxglibc2/include
ln -s /usr/src/linux/include/linux
ln -s /usr/src/linux/include/asm
ln -s /usr/X11R6/include/X11
You might also have other libraries such as ncurses which need their
header files put in this directory. You should copy or link the files
from /usr/include. (Some libraries may need to be recompiled with glibc2
in order to work with it. In these cases, just compile and install the
package to /usr/i486-linuxglibc2.)
우선 다음과 같은 파일(glibc.c)를 만든다:
#include <stdio.h>
main()
{
printf("hello world!\n");
}
그리고 옵션"-b <base install directory> -nostdinc -I<install directory>/include -I/usr/lib/gcc-lib/<new system dir>/<gcc version>/include" 을 가지고 컴파일 한다.
% gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
ldd를 이용하여서 프로그램이 glibc2에 링크되었는지 확인해본다:
% ldd glibc
libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
컴파일이 되고, 링크 과정도 정상이며, 실행시 "hello world!" 가
출력이 된다면, 설치는 성공적으로 끝난 것이다. (축하....^^)