[RevServer + Rev on Linux] Checking if you have the needed libraries

Richard Gaskin ambassador at fourthworld.com
Wed Jul 28 11:06:03 CDT 2010


VERY valuable stuff, Andre.  Thanks. I wasn't aware of the ldd command - 
good stuff to know.

--
  Richard Gaskin
  Fourth World
  Rev training and consulting: http://www.fourthworld.com
  Webzine for Rev developers: http://www.revjournal.com
  revJournal blog: http://revjournal.com/blog.irv


Andre Garzia wrote:

> For those running or trying to run revolution under linux, there on trick
> that help you troubleshoot library dependency problems. Go to your terminal
> and into the folder that contains the executable engine for revolution be it
> revserver or rev ide and run "ldd <executable file>" like this:
>
>    ldd /home/agarzia/prog/revolution/4.5.0-dp-3/revolution
>
> The output of this command lists the shared library used and their location,
> like this example output from my ubuntu machine:
>
>     linux-gate.so.1 =>  (0x00e3c000)
>     libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x007ca000)
>     libX11.so.6 => /usr/lib/libX11.so.6 (0x00110000)
>     libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00a1d000)
>     libXext.so.6 => /usr/lib/libXext.so.6 (0x0037c000)
>     libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x004e6000)
>     libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x0038c000)
>     /lib/ld-linux.so.2 (0x00548000)
>     libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00c2b000)
>     libXau.so.6 => /usr/lib/libXau.so.6 (0x00ff0000)
>     libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00c15000)
>
> Now, when it does not find some library like RevServer is doing on my ubuntu
> machine, the output is like this:
>
>     ldd revserver:
>
>     linux-gate.so.1 =>  (0x00410000)
>     libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00a0b000)
>     libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x007fc000)
>     libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x005a8000)
>     libpcre.so.0 => not found
>     libpng12.so.0 => /lib/libpng12.so.0 (0x00110000)
>     libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x006fe000)
>     libcurl.so.4 => /usr/lib/libcurl.so.4 (0x006a1000)
>     libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00135000)
>     libz.so.1 => /lib/libz.so.1 (0x00326000)
>     /lib/ld-linux.so.2 (0x0084a000)
>     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0076e000)
>     libidn.so.11 => /usr/lib/libidn.so.11 (0x00e48000)
>     liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x00cbe000)
>     libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0x00482000)
>     librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0x004e7000)
>     libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x0028f000)
>     libssl.so.0.9.8 => /lib/i686/cmov/libssl.so.0.9.8 (0x008ad000)
>     libcrypto.so.0.9.8 => /lib/i686/cmov/libcrypto.so.0.9.8 (0x00a0f000)
>     libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0x002be000)
>     libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x002d2000)
>     libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x0033b000)
>     libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00965000)
>     libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x004f0000)
>     libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x002ea000)
>     libcom_err.so.2 => /lib/libcom_err.so.2 (0x0030e000)
>     libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x0079d000)
>     libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00312000)
>     libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0x00fad000)
>     libgcrypt.so.11 => /lib/libgcrypt.so.11 (0x00d9e000)
>     libgpg-error.so.0 => /lib/libgpg-error.so.0 (0x009f9000)
>
> You can see on the fourth line that it did not find libpcre which is the
> Perl Regular Expression library that among other stuff gives use matchtext
> and matchchunk functionalities and might be used internally as well. Now, I
> used synaptic to install libpcre just now, why it is not able to find it?
>
> Using the "locate" command, you can see where the libraries are located,
> here it goes:
>
>     locate libpcre
>
>     /lib/libpcre.so.3
>     /lib/libpcre.so.3.12.1
>
> What we can see from that output is that revserver wants libpcre.so.0 and we
> have libpcre.so.3 so what would a good unix chap do? A symlink to create an
> alias pointing libpcre.so.0 to libpcre.so.3:
>
>     sudo ln -s /lib/libpcre.so.3 /lib/libpcre.so.0
>
> This creates the symbolic link and now:
>
>     ldd ./revserver
>
>     linux-gate.so.1 =>  (0x00939000)
>     libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x005dc000)
>     libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00bac000)
>     libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00cf5000)
>     libpcre.so.0 => /lib/libpcre.so.0 (0x00e91000)
>     ...
>
> Now you see that the engine is happy and found all its required libs. Let us
> create a simple revserver page named test.irev with the following content:
>
>     <?rev
>
>       put "hello world from revserver" && the version && the buildnumber &
> cr
>
>     ?>
>
> Now when we run it from the terminal:
>
>     ./revserver test.irev
>
>     hello world from revserver 3.5.0 860
>
> Hope this little piece here shows you that with some unix trick you can put
> your engines to work. Remember Linux Administration is 50% Symlinking like
> mad, 25% reading logs and 25% faith.
>
> :D
>
> Oh, you can do the same thing under mac os x with "otool" instead of "ldd".
>
> Andre "I will symlink you into submission" Garzia




More information about the use-livecode mailing list