From: Roumen P. <bug...@ro...> - 2008-05-29 21:23:27
|
Ralf Wildenhues wrote: > * Roumen Petrov wrote on Tue, May 27, 2008 at 11:35:56PM CEST: >> Ralf Wildenhues wrote: >>> * Roumen Petrov wrote on Tue, May 27, 2008 at 09:05:18PM CEST: >>>> No. It look like name generated from libtool and algorithm to compute >>>> X in win32 case is no so usefull. >>> Can you please substantiate that claim? > >> cygwin/mingw case: >> 1) X=version=current-age, i.e libfoo-X.dll; >> 2) if interface is added=> ++current, ++age => version is same X, i.e. >> libfoo-X.dll; >> If program is linked with library from 2) and use new interface it will >> fail on system where exist 1) . > > Sure. But that's no different from how major versions work on, say, > Linux. If you use the library from (2), it will work with both old > and new ones. It is a backward compatible interface change. I'm not sure. Let application A and B use libfoo-N.dll, A is build against library form 1) and B - from 2) and use new interface. Install scenarios: - without to replace library if version is same: Let application A is installed first and B second then B will fail to run since new interface is missing in library. - with replacement of library: Let application B is installed first and A second. Since installation of A replace library existing application B will fail to run. > If Libtool had chosen instead to rename a library upon each compatible > (and not just each incompatible) interface change, then there would be > literally no chance to share libraries at all, for such compatible > changes are very common. This is all no different on most other > systems, you cannot expect to install an older version over a newer one > and expect things to work. In the current libtool versioning mingw scheme I don't know how to distinguish cleanly cases 1) and 2). One solution is libtool link flag -release. Other is with resource file where to put release info. > Cheers, > Ralf Roumen |