Out of curiosity, i the case of revserver since self compiling isn't an option, would static linking be a bad idea? Or would it be too resource intensive?
On Wed, Jul 28, 2010 at 10:09 AM, Andre Garzia <[email protected]> wrote: > Thanks for the kind words Richard, I know that half of the problem of rev > under linux is getting it to run, may it be rev cgi engine, revserver or rev > ide. This is just an email to be indexed by all the crawlers out there so > that when people search for this kind of trouble they can get a good answer. > > I struggle with libraries and that damn linker every day here, so I learned > some tricks. > > ldd and otool are very good for troubleshooting. ln is also a good friend > when you have the wrong version of a library. > > On Wed, Jul 28, 2010 at 1:06 PM, Richard Gaskin > <[email protected]>wrote: > >> 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 >>> >> >> _______________________________________________ >> use-revolution mailing list >> [email protected] >> Please visit this url to subscribe, unsubscribe and manage your >> subscription preferences: >> http://lists.runrev.com/mailman/listinfo/use-revolution >> > > > > -- > http://www.andregarzia.com All We Do Is Code. > _______________________________________________ > use-revolution mailing list > [email protected] > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-revolution > _______________________________________________ use-revolution mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
