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)
root@debian:~#
 
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
ldap
ld.so.cache
ld.so.conf
ld.so.conf.d
wildmidi
root@debian:/etc#
 
ld.so.cache
- 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#

root@debian:/etc/ld.so.conf.d# cat vmwaretoolslibraries.conf
/usr/lib/vmwaretools/lib32/libvmGuestLib.so
/usr/lib/vmwaretools/lib64/libvmGuestLib.so
/usr/lib/vmwaretools/lib32/libvmGuestLibJava.so
/usr/lib/vmwaretools/lib64/libvmGuestLibJava.so
/usr/lib/vmwaretools/lib32/libDeployPkg.so
/usr/lib/vmwaretools/lib64/libDeployPkg.so
root@debian:/etc/ld.so.conf.d#

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
/usr/local/lib
root@debian:/etc/ld.so.conf.d# cat x86_64linuxgnu.conf
# Multiarch support
/lib/x86_64linuxgnu
/usr/lib/x86_64linuxgnu
root@debian:/etc/ld.so.conf.d#
 
All of the files inside these folders will be included when the cache is created
To create the cache:
ldconfig
–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