Oh what the heck, another CGI question

Andre Garzia soapdog at mac.com
Fri Apr 20 06:58:05 EDT 2007


Hello Bryan,

problems with library dependencies are pretty common on linux and bsd. The way those systems "culture" were built, it´s pretty common for a developer to link against shared libraries that you may or may not have. Usually this issue is solved by distributing the software in source format with autogen tools that will generate the instructions for that software to compile on your machine with the libraries you have but then again, when you upgrade a library, depending on which path you took to upgrade it, all hell breaks loose.

Revolution and some other tools that are being distributed in binary format suffer from worse problems, since we can´t modify the library reference on the executable application (IIRC) our only hope is to have the correct libraries. This happens all the time with the linux engine linking against ancient libC. One thing in favor of Rev is that is doesn´t link to any esoteric library, it just link against some pretty common ones, like Standard C Library (just like everyone), some GTK libs I think and other common stuff. So the problem is not missing the libraries, the problem is wrong version of the library or wrong location. One hack that can save you is to make symbolic links from the library reference that revolution is looking for to the library that you know you have. In your case you could have done a link like:

    libstdc++.so.3 -----> libstdc++.so

After that and praying to the Gods of Backward Compatibility, your software might just work(tm). Somtimes I wish all software was linked statically.
When RunRev Team releases updated engines for Linux and BSDs, I hope they link against stub libraries such as libstdc++.so which is always a link to the current standard c++ library installed, this would solve many problems.

Since now you´re building CGIs, you might want to check my little RevOnRockets package which is located at:

    http://andregarzia.com/RevHTTP.zip

my site content is down, but the files are being served. This package is a little web server built with rev and some libraries for cgi development and examples. You can use it to learn more or to debug your own cgis from inside rev ide before deploying them on live servers. One very cool thing is EasyDebug library which will pick errors from try/catch block and build full html reports detailing the error and even show you the line in the source that has that error. All for free.

Be welcome to the wonderful (and sometimes difficult) world of Rev CGI Development.

Cheers
andre


 
On Thursday, April 19, 2007, at 01:32PM, "Bryan McCormick" <bryan at deepfoo.com> wrote:
>Andre,
>
>Thanks for the quick response. The CGI tutorial was indeed excellent. It 
>does turn out BSD has a 2.2.1 version of the engine going.
>
>One thing my ISP noted is that there were some odd problems with the 
>libraries used when the BSD version was compiled. This is not "my thing" 
>but I am putting it out there so folks will know. Otherwise you can do 
>everything right and end up hitting your head against 500 errors. They 
>were nice enough to upload libs for backwards compatibility to the 
>server so now it is working. Here is the note:
>
><< -------------------------
>
>The problem is your engine was compiled for FreeBSD 4, but you're on 
>FreeBSD 5.
>
>su-2.05b$ ./revolution
>/usr/libexec/ld-elf.so.1: Shared object "libstdc++.so.3" not found, 
>required by "revolution"
>
>su-2.05b$ locate libstdc
>/usr/lib/libstdc++.a
>/usr/lib/libstdc++.so
>/usr/lib/libstdc++.so.4
>
>If revolution was compiled to use libstdc++.so instead of 
>libstdc++.so.3, then it should be more portable between FreeBSD 
>versions.  I wouldn't recommend compiling against libstdc++.so.4 either 
>because if you ever move your website to a newer server, or if the 
>server is ever upgraded, it will definitely break.
>
>All that said, I installed some downward compatibility libraries, so the 
>script runs now.
>
>----------------------- >>
>_______________________________________________
>use-revolution mailing list
>use-revolution at lists.runrev.com
>Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>http://lists.runrev.com/mailman/listinfo/use-revolution
>
>



More information about the use-livecode mailing list