4gl/shared library/upgrade
Posted in 1999
Topics: Installation, Setup & Upgrades, Connectivity: ESQL/C, 4GL & Embedded SQL, Platform-Specific Issues
I have read all the posting that I could find about this subject and haven't seem to found the answer I was looking for. I'll give an example to help ask my question. When we moved to the 4GL v6.04 from the v.4.14, and upgraded AIX to 4.2.1 we had the ability to use shared libraries. We decided to use the environment variable C4GLFLAGS="-anyerr -shared -nokeep" when we compiled. Now we are going to 4GL 7.20 and are finding that we will have to compile due to the libraries changing. When we do a dump on the v6.04 executable it show use LIBPATH and shared libraries it will use. One of those is "lib4gsh604.a". With the v7.20 executable it is now "lib4gsh720shr.a". My question is will we have to recompile with every minor version that is released, ex:7.20 -> 7.21? Will it's libraries be changed to reflect "lib4gsh721shr.a"? If it is then it is a pain to recompile every time there are minor bug fixes. Will changing back to static libraries compiled into the executable lesson the need to recompile so often? I assume that this way will generally create larger executables and could eat up more memory per process. --== Sent via Deja.com http://www.deja.com/ ==-- ---Share what you know. Learn what you don't.---
timcrafton@my-deja.com wrote: > > I have read all the posting that I could find about this subject and > haven't seem to found the answer I was looking for. I'll give an > example to help ask my question. > > When we moved to the 4GL v6.04 from the v.4.14, and upgraded AIX to > 4.2.1 we had the ability to use shared libraries. We decided to use > the environment variable C4GLFLAGS="-anyerr -shared -nokeep" when we > compiled. Now we are going to 4GL 7.20 and are finding that we will > have to compile due to the libraries changing. When we do a dump on > the v6.04 executable it show use LIBPATH and shared libraries it will > use. One of those is "lib4gsh604.a". With the v7.20 executable it is > now "lib4gsh720shr.a". My question is will we have to recompile with > every minor version that is released, ex:7.20 -> 7.21? Yes. > Will it's libraries be changed to reflect "lib4gsh721shr.a"? > If it is then it is a pain to recompile every time there are > minor bug fixes. Yes, but minor bug fixes can involve changes to interfaces and that requires a different library version. This way you are safe. And if your program worked previously, you can leave the old library in your directory (it won't be overwritten, after all), and the programs you have not recompiled will continue to use it, and the ones you needed to recompile to benefit from the bug fix will use the new library. > Will changing back to static libraries compiled into the executable > lesson the need to recompile so often? No more and no less. The unrecompiled code will continue to work as before, and the programs will have to be recompiled to benefit from the fix. Of course, your static programs will be much larger than the shared programs -- anything up to a factor of 10 times bigger. > I assume that this way will generally create larger executables > and could eat up more memory per process. Yes, and yes, and much more so than a simple recompilation will. After all, you do have an automatic build which simply compiles everything when you say 'make', don't you? -- Jonathan Leffler (jleffler@informix.com, jleffler@earthlink.net) Guardian of DBD::Informix v0.60 -- see http://www.perl.com/CPAN #include <disclaimer.h>