CentOS 7에서 GLIBC 2.18 사용하기
공유라이브러리 의존관계
- 공유 라이브러리 정보는 ELF 의 동적섹션(
.dynamic)에 NEEDED 로 기록되어 있음
- NEEDED 로 표시되어있는 것은 SONAME 이므로, SONAME 으로부터 실제 파일을 찾아야 함.
LD_LIBRARY_PATH
/etc/ld.so.cache
/etc/ld.so.conf
ldconfig
$ objdump -p ./httpd
...
Dynamic Section:
NEEDED libz.so.1
NEEDED libm.so.6
NEEDED libaprutil-1.so.0
NEEDED libexpat.so.0
NEEDED libapr-1.so.0
NEEDED librt.so.1
NEEDED libcrypt.so.1
NEEDED libpthread.so.0
NEEDED libc.so.6
RPATH /home1/irteam/apps/apache-2.2.34/lib
INIT 0x00000000004239b0
FINI 0x0000000000489a88
# readelf
$ readelf -d ./httpd
Dynamic section at offset 0xb4250 contains 29 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libaprutil-1.so.0]
0x0000000000000001 (NEEDED) Shared library: [libexpat.so.0]
0x0000000000000001 (NEEDED) Shared library: [libapr-1.so.0]
0x0000000000000001 (NEEDED) Shared library: [librt.so.1]
0x0000000000000001 (NEEDED) Shared library: [libcrypt.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000f (RPATH) Library rpath: [/home1/irteam/apps/apache-2.2.34/lib]
0x000000000000000c (INIT) 0x4239b0