
On 6/17/05, Julio M. Merino Vidal <jmmv84@gmail.com> wrote:
Everything went correctly, but then I found more files than expected under the stage/lib directory. These are:
libboost_filesystem-mt.a libboost-filesystem-mt.so (link to libboost_filesystem_mt.so.1.32.0) libboost_filesystem_mt.so.1.32.0
As I understand from the documentation, setting --layout=system during the build should cause all libraries to be unversioned (i.e., only the .a and .so should be there), although from the above results it seems to be working incorrectly in this platform.
No, I believe this is the correct behavior. Versioned shared libraries (if used properly) ensure that you can't accidentally pick up an incompatible (older or newer) version of a library at run time, even if it has the same name as the one you compiled with. As a user, you don't need to know you're linking with the .so.1.32.0 version of the library, you just link with -lboost_filesystem-mt, and your linker takes care of the version binding. The default --layout behavior adds the Boost version number into the actual library name (the part *before* .a or .so), which means you need to link with (say) -lboost_filesystem-gcc-mt-1_32.
However, trying this same thing under NetBSD/i386 (GCC 3.3.3) resulted in the expected files; the .so.1.32.0 was not created, and the .so one was a real file, not a link.
Perhaps NetBSD doesn't support versioned shared libraries, or the Boost.Build plumbing doesn't know how to create them on that platform.
Any idea about what can be causing this issue? Am I doing something wrong?
No. I don't think so. -- Caleb Epstein caleb dot epstein at gmail dot com