I haven't read the libboost documentation, but I speculate that the reason that the upstream library names all include `gcc41' is because different C++ compilers give a different ABI for a given piece of code (different name mangling, calling conventions etc.). This is comparable to debian's practice of putting `c2a' in package names (see http://lists.debian.org/debian-release/2005/04/msg00153.html for the c2 part; I can't find an authoritative explanation of the `a' part, but it indicates an ABI-incompatible change in the default allocator used by libstdc++).
Including an indicator of the compiler (or ABI) in the library name is presumably intended to allow having multiple ABI versions installed at once. As I say, that's just my guesses without having looked at libboost documentation or speaking with libboost maintainers. As for how calling programs should determine what ABI version to link against, I suppose we either - hard-code the answer (e.g. have a symlink that doesn't include a compiler/ABI version, or a pkg-config name that doesn't mention compiler/ABI version) and handle C++ ABI transitions much the same as other libraries; and/or - provide an autoconf macro that does something like lb_ABI=`${CXX} -E -dM - </dev/null 2>&1 |grep ABI` case "$lb_ABI" in '#define __GXX_ABI_VERSION 1002') lb_abi_str=-gcc41 ;; '#define __GXX_ABI_VERSION 102') lb_abi_str=-gcc33 ;; ... esac The libboost source might give a clue as to what tests to use and/or what library names libboost uses for different compilers (-gcc33 was just my guess). pjrm. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]