Tuesday, March 20, 2012

Linux 6 - Manage Shared Libraries

  • what are shared libraries
  • determining associated libraries
  • configuring system
  • ldd, lddconfig
  • ld.so.cache, ld.so.conf.d

A shared library or shared object is a file that is intended to be shared by executable files and further shared objects files.
Modules used by a program are loaded from individual shared objects into memory at load time or run time, rather than being copied by a linker when it creates a single monolithic executable file for the program.
The shared library is in essence a DLL file from Windows.  The main advantage is that if two programs need to use the same functions that these libraries provide then they can do so without sacrificing memory.
root@debian:~# ldd /bin/ls
linuxvdso.so.1 => (0x00007fffa35ff000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00007f28e0ef4000)
librt.so.1 => /lib/librt.so.1 (0x00007f28e0cec000)
libacl.so.1 => /lib/libacl.so.1 (0x00007f28e0ae4000)
libc.so.6 => /lib/libc.so.6 (0x00007f28e0782000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f28e057e000)
/lib64/ldlinuxx8664.so.2 (0x00007f28e1123000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f28e0361000)
libattr.so.1 => /lib/libattr.so.1 (0x00007f28e015d000)
The output shows you what libraries are needed. ldd also looks at a cache file.
root@debian:~# cd /etc/
root@debian:/etc# ls | grep ld
- contains a cache file for libraries
- it's a binary file not a text file
- how this file is created depends on the ld.so.conf conf file

root@debian:/etc# cat ld.so.conf
include /etc/ld.so.conf.d/*.conf

- this means to include every .conf file in the /etc/ld.so.conf.d folder
root@debian:/etc/ld.so.conf.d# ls
libc.conf vmwaretoolslibraries.conf x86_64linuxgnu.conf

root@debian:/etc/ld.so.conf.d# cat vmwaretoolslibraries.conf

it shows all of the libraries files that the different vmware binaries will be looking for

root@debian:/etc/ld.so.conf.d# cat libc.conf
# libc default configuration
root@debian:/etc/ld.so.conf.d# cat x86_64linuxgnu.conf
# Multiarch support
All of the files inside these folders will be included when the cache is created
To create the cache:
–when the OS is finished installing new applications it will run ldconfig
–to be sure that the all of the needed libraries will exist in the cache
export LD_LIBRARY_PATH=/path/to/libs
–it will look there before anywhere elese
–not the greatest available

No comments:

Post a Comment