Re: [brlcad-devel] BRL-CAD version information for users
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Gabriel M. B. <ga...@te...> - 2010-01-29 17:05:30
|
On Fri, 29 Jan 2010, Daniel Roßberg wrote: >>> many programs using these. And there is my point: The programs >>> memorized the Python, TCL, etc. library version they were build with. [snip] >> >> Not exactly. When they load the .so-file (equiv. of a DLL) there is one or >> more API versions (integer) encoded in the library file. ld looks for a [snip] >> >> So, they don't look into a manifest file, it's encoded in the so-file. > > We have probable a misunderstanding here. In the mentioned paragraph > I wasn't talking about source and object files but about executable > and .deb files. I.e. if I install a .deb file all its dependencies > are mentioned in this file without access to the .so files. Possibly! :-) Windows is such a pain. In Linux, this sort of dependency is tracked both in packaging and at run-time. So, it's possible to have 4 or 5 different versions of librt installed... and it always "does the right thing." Still, the way libtool works is fundamental to the way that packaging is done (including .deb packages). But searching for "DLL Hell" is still a good direction. I think the common solution is to have a registry key and GUID that your package can look up at install-time to see if you have a compatable version of another piece of software. For example, I have a program on windows using the MSI packager with a "Product" GUID of {6101CFDF-9885-4084-B953-7DDF67232182}. You can look up in the registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{6101CFDF-9885-4084-B953-7DDF67232182}\DisplayVersion And see that 1.0.7 is installed. There's also a Major/Minor version number you can query. So, you can set up your installer to query things about the installation properties of another piece of software like this. But that's the extent (or beyond the extent) of my knowlege in Windows library dependency management. :-) > However, you made an interesting point there: "ld looks for a library > with the right ... internal API version to load." Where does ld know > "the right internal API version" from? (I hope the answer isn't > "libtool". BTW, "man libtool" gives a rather short explanation.) It's part of the format of the .so files. See: http://www.gnu.org/software/libtool/manual/ -gabriel |