Library rpath si Library runpath

ATENTIE, am manarit referintele la librarii (vezi /etc/ld.so.conf).
Vezi Library rpath si Library runpath cu:

readelf -d /usr/sbin/httpd

http://en.wikipedia.org/wiki/Rpath:
At run time, if the dynamic linker finds a DT_RUNPATH attribute, it ignores the value of the DT_RPATH attribute, with the effect that LD_LIBRARY_PATH is checked next and the paths in the DT_RUNPATH attribute are only searched after it. This means that in such configurations, the paths in LD_LIBRARY_PATH are searched before those given at link time using -rpath if –enable-new-dtags was active. The ld dynamic linker does not search DT_RUNPATH locations for transitive dependencies, unlike DT_RPATH. [3] Instead of specifying the -rpath to the linker, the environment variable LD_RUN_PATH can be set to the same effect.
http://man7.org/linux/man-pages/man8/ld.so.8.html:

	If a library dependency does not contain a slash, then it is searched for in the following order:
       o  (ELF only) Using the directories specified in the DT_RPATH dynamic
          section attribute of the binary if present and DT_RUNPATH
          attribute does not exist.  Use of DT_RPATH is deprecated.
       o  Using the environment variable LD_LIBRARY_PATH.  Except if the
          executable is a set-user-ID/set-group-ID binary, in which case it
          is ignored.
       o  (ELF only) Using the directories specified in the DT_RUNPATH
          dynamic section attribute of the binary if present.
       o  From the cache file /etc/ld.so.cache, which contains a compiled
          list of candidate libraries previously found in the augmented
          library path.  If, however, the binary was linked with the -z
          nodeflib linker option, libraries in the default library paths are
          skipped.  Libraries installed in hardware capability directories
          (see below) are preferred to other libraries.
       o  In the default path /lib, and then /usr/lib.  If the binary was
          linked with the -z nodeflib linker option, this step is skipped.	

a) ldd /usr/sbin/httpd initial arata libc.so.6 => not found

ln -s /ffp/lib/libc.so.0 /ffp/lib/libc.so.6
ln -s /ffp/lib/libc.so /ffp/lib/libc.so.6
ln -s /lib/libc.so.6 /ffp/lib/libc.so.6

iar acum arata libc.so.6 => /ffp/lib/libc.so.6
La fel pentru:

ln -s /ffp/lib/libdl-0.9.33.2.so /ffp/lib/libdl.so.2
ln -s /ffp/lib/libcrypt-0.9.33.2.so /ffp/lib/libcrypt.so.1
ln -s /ffp/lib/librt-0.9.33.2.so /ffp/lib/librt.so.1
ln -s /ffp/lib/libm-0.9.33.2.so /ffp/lib/libm.so.6
ln -s /ffp/lib/libcrypto.so.1.0.0 /ffp/lib/libcrypto.so.0.9.8
ln -s /ffp/lib/libssl.so.1.0.0 /ffp/lib/libssl.so.0.9.8

Nu e bine sa las links de mai sus pt ca in caz de update a so referitele acestor links nu se updateaza:
rm /ffp/lib/libc.so.6 /ffp/lib/libdl.so.2 /ffp/lib/libcrypt.so.1 /ffp/lib/librt.so.1 /ffp/lib/libm.so.6 /ffp/lib/libcrypto.so.0.9.8 /ffp/lib/libssl.so.0.9.8

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.