RPM으로 설치한 라이브러리는 대개 컴파일시 -g flag가 빠져있어서
gdb와 같은 디버거로 소스를 추적(step 명령으로)할 수 없게 되어
있습니다.

일반 사용자라면 아무런 지장이 없지만, 라이브러리 사용법을 배우고자
하는 개발자라면 (특히 open source 계열의 라이브러리들은 문서가
부족하기 때문에) 디버깅시 라이브러리 함수 안으로 step in 할 필요가
있습니다.

따라서 다음과 같은 과정으로 라이브러리를 다시 만들 수 있습니다.

예를 들어 개발자가 gtk 관련 함수를 추적하고 싶다고 가정합시다.

1. 일단 필요한 라이브러리 패키지 이름을 알아야 합니다.
만약 필요한 소스 RPM을 가지고 있다면 단계 3부터 보기 바랍니다.

1.1. 간단히 다음과 같이 query 옵션을 써서 알아내거나,

$ rpm -qa | grep -i jpeg
libjpeg-devel-6b-21
...

1.2. 관련 라이브러리 파일 이름을 안다면 다음과 같이 알아냅니다.

$ rpm -qf /usr/lib/libjpeg.a
libjpeg-devel-6b-21

2. 다음으로, 이 라이브러리의 소스 RPM 패키지 이름을 알아냅니다.

$ rpm -qi libjpeg-devel
... Source RPM: libjpeg-6b-21.src.rpm
...

3. 이제 rpmfind.net이나 기타 사이트에서 이 소스 RPM을 받습니다.

4. 이제부터는 root 권한이 필요합니다.
일단 /etc/rpmrc 파일을 열어봅니다. (없으면 만듭니다.)

마지막 란에 다음을 추가합니다.

optflags: i686 -g -O2 -mcpu=i686
optflags: i386 -g -O2 -march=i386

(참고로 /usr/lib/rpm/rpmrc를 보면 단지 '-g'만이 추가된
것을 알 수 있습니다.)
이 과정은 rpm 패키지를 만들때 기본적으로 쓸 컴파일러 flag을
지정하는 것입니다.

5. 다음으로 이 소스 rpm을 설치합니다.

# rpm -Uvh libjpeg-6b-21.src.rpm

디폴트로 RPM spec file은 /usr/src/redhat/SPECS/에
설치됩니다.

# ls /usr/src/redhat/SPECS
libjpeg.spec

이제 다음 명령으로 새 패키지를 만듭니다.
제 경우는 Pentium III CPU를 쓰기 때문에 스피드 향상도 꽤할겸
펜티엄 전용 코드를 만들어 냅니다.
(다른 경우라면 아래 명령에서 --target=... 을 빼면 됩니다.)

# cd /usr/src/redhat/SPECS
# rpmbuild --target=i686-redhat-linux-gnu -ba libjpeg.spec

(이 과정은 rpm 파일을 만들기 때문에 상당한 시간이 걸립니다.)

이제 원하는 RPM 파일은 /usr/src/redhat/RPMS/i686에
위치하게 됩니다. (target 옵션을 안 줬으면 .../i386에 위치)
또한 이 과정을 거친 다음의 소스는 /usr/src/redhat/BUILD
에 위치합니다.

6. 5에서 만들어진 RPM을 설치합니다.
# rpm -Uvh --force libjpeg-6b-21.i686.rpm
# rpm -Uvh --force libjpeg-devel-6b-21.i686.rpm

이제 끝났습니다.
5의 과정에서 만들어진 패키지의 소스(/usr/src/redhat/BUILD에 위치)
를 지우지만 않는다면 앞으로 gdb로 debugging할 때 library
함수도 step 명령으로 추적할 수 있습니다.