다음 이전 차례

4. 시험삼아 설치하기

Glibc 2를 시험삼아 설치하면, 컴파일 할 때에 특별한 변수를 사용하여 glibc 2에 링킹시키지 않는한 이미 설치되어 있는 기존의 라이브러리에 링킹이 된다. 설치 디렉토리 위치(path)가 몇 파일에 포함되어 컴파일되므로 , 소스로 부터 라이브러리를 설치해야만 한다.

4.1 컴파일하기와 설치하기

전제 조건

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가 추가된 라이브러리 디렉토리를 찾을 수 있다.

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
 

4.2 동적로더(dynamic loader)를 업그레이드하자.

  1. 만들어진 ld.so를 /lib/ld-linux.so.2로 링킹시킨다:
     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.
  2. /etc/ld.so.conf 파일을 편집한다. 파일의 마지막 라인에 새롭게 만들어진 라이브러리 디렉토리의 경로명(path)를 적으면 된다. 즉 우리가 설치했던 경우에는 '/usr/i486-linuxglibc2/lib'을 적으면 된다. (주의 사항 : '은 적는 것이 아님.^^) /etc/ld.so.conf 파일을 변경했으면, 다음과 같이 실행해 보라.
     ldconfig -v
     
    

4.3 gcc를 configure하기

설치의 마지막 단계가 /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 파일단원 에서 찾을 수 있다.

4.4 헤더 파일 링크를 업데이트하기.

헤더 파일 링크는 다음과 같이 한다:

 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.)

4.5 설치된것을 테스트하기

우선 다음과 같은 파일(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!" 가 출력이 된다면, 설치는 성공적으로 끝난 것이다. (축하....^^)


다음 이전 차례