title: .so search paths
body: <p>I am a Linux novice (coming from a Windows background).  I'd like to understand the details of how shared objects (.so files) are loaded at runtime.  According to <a href="http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html">http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html</a> the file /etc/ld.so.conf configures the directories to search for .so files at runtime.  However an experiment shown below seems to indicate that isn't the case.  /usr/local/lib is in one of the .conf files in /etc/ld.so.conf.d, but when my .so is in /usr/local/lib it is not found at run-time.  Conversely /usr/lib is <em>not</em> configured by /etc/ld.so.conf, but when my .so is in /usr/lib it <em>is</em> found at runtime.</p>
  
  <p>What am I missing?</p>
  
  <p>Thanks,
  Dave</p>
  
  <pre><code>davids@ds-ub64-7:/$ # Display the .so search path configured in /etc/ld.so.conf
  davids@ds-ub64-7:/$ cat /etc/ld.so.conf
  include /etc/ld.so.conf.d/*.conf
  davids@ds-ub64-7:/$ cat /etc/ld.so.conf.d/*.conf
  /usr/lib/mesa
  /usr/lib32/mesa
  /usr/lib32/alsa-lib
  /usr/lib/alsa-lib
  # libc default configuration
  /usr/local/lib
  # Multiarch support
  /lib/x86_64-linux-gnu
  /usr/lib/x86_64-linux-gnu
  
  davids@ds-ub64-7:/$ # libsotest.so.1 is in /usr/local/lib
  davids@ds-ub64-7:/$ ls -la /usr/local/lib/libsotest*
  lrwxrwxrwx 1 root   root     14 2012-07-19 08:24 /usr/local/lib/libsotest.so -&gt; libsotest.so.1
  lrwxrwxrwx 1 root   root     18 2012-07-19 08:24 /usr/local/lib/libsotest.so.1 -&gt;     libsotest.so.1.0.1
  -rwxr-xr-x 1 davids davids 7952 2012-07-19 08:13 /usr/local/lib/libsotest.so.1.0.1
  
  davids@ds-ub64-7:/$ # But when I run an executable that refrs to libsotest.so.1, the loader     doesn't find it.
  davids@ds-ub64-7:/$ /projects/sotest/exe/sotestexe
  /projects/sotest/exe/sotestexe: error while loading shared libraries: libsotest.so.1: cannot     open shared object file: No such file or directory
  
  davids@ds-ub64-7:/$ # Configure loader to display the paths it's searching...it's     searching /usr/lib but not /usr/local/lib
  davids@ds-ub64-7:/$ export LD_DEBUG=lib
  davids@ds-ub64-7:/$ /projects/sotest/exe/sotestexe
  warning: debug option `lib' unknown; try LD_DEBUG=help
  /projects/sotest/exe/sotestexe: error while loading shared libraries: libsotest.so.1: cannot     open shared object file: No such file or directory
  davids@ds-ub64-7:/$ export LD_DEBUG=libs
  davids@ds-ub64-7:/$ /projects/sotest/exe/sotestexe
        6691: find library=libsotest.so.1 [0]; searching
        6691:  search cache=/etc/ld.so.cache
        6691:  search     path=/lib/tls/x86_64:/lib/tls:/lib/x86_64:/lib:/usr/lib/tls/x86_64:/usr/lib/tls:/usr/lib/x86_64:/usr/    lib:/lib/x86_64-linux-gnu/tls/x86_64:/lib/x86_64-linux-gnu/tls:/lib/x86_64-linux-    gnu/x86_64:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls/x86_64:/usr/lib/x86_64-linux-    gnu/tls:/usr/lib/x86_64-linux-gnu/x86_64:/usr/lib/x86_64-linux-gnu        (system search path)
        6691:   trying file=/lib/tls/x86_64/libsotest.so.1
        6691:   trying file=/lib/tls/libsotest.so.1
        6691:   trying file=/lib/x86_64/libsotest.so.1
        6691:   trying file=/lib/libsotest.so.1
        6691:   trying file=/usr/lib/tls/x86_64/libsotest.so.1
        6691:   trying file=/usr/lib/tls/libsotest.so.1
        6691:   trying file=/usr/lib/x86_64/libsotest.so.1
        6691:   trying file=/usr/lib/libsotest.so.1
        6691:   trying file=/lib/x86_64-linux-gnu/tls/x86_64/libsotest.so.1
        6691:   trying file=/lib/x86_64-linux-gnu/tls/libsotest.so.1
        6691:   trying file=/lib/x86_64-linux-gnu/x86_64/libsotest.so.1
        6691:   trying file=/lib/x86_64-linux-gnu/libsotest.so.1
        6691:   trying file=/usr/lib/x86_64-linux-gnu/tls/x86_64/libsotest.so.1
        6691:   trying file=/usr/lib/x86_64-linux-gnu/tls/libsotest.so.1
        6691:   trying file=/usr/lib/x86_64-linux-gnu/x86_64/libsotest.so.1
        6691:   trying file=/usr/lib/x86_64-linux-gnu/libsotest.so.1
        6691: 
  /projects/sotest/exe/sotestexe: error while loading shared libraries: libsotest.so.1: cannot     open shared object file: No such file or directory
  davids@ds-ub64-7:/$
  </code></pre>