Longyu Mei wrote:
After I built boost in Linux, I found in the lib directory there are three files for each package. For example, for system, files are
libboost_system-gcc41-mt-1_35.so libboost_system-gcc41-mt-1_35.so.1.35.0 libboost_system-gcc41-mt.so
Why is that? Only one file is needed in my link flag? which one?
They are typically linked to each other (there is only one 'real' file - the others are pointers with different names. listing with 'ls -l' shows more detail: lrwxrwxrwx 1 root root 25 2008-02-24 17:06 libboost_thread.so -> libboost_thread.so.1.33.1 -rwxr-xr-x 1 root root 45508 2008-01-17 11:02 libboost_thread.so.1.33.1 lrwxrwxrwx 1 root root 25 2008-02-24 17:03 libboost_thread.so.2 -> libboost_thread.so.1.33.1 This allows you to include the libboost_thread.so file in your build and when you upgrade to a new version, the specific version of the file does not need to be changed in your build file (ie. you can keep referring to libboost_thread.so even though it may now link to libboost_thread.so.1.34.1) Another point you might not be aware of is that when you link to a library file, depending on the platform, there may be some prefix or suffix added by the compiler - specifically, on linux, the "lib" is prefixed and ".so" suffixed so you would include the following in your build file: -l boost_system-gcc41-mt (I confess that since I don't have the "-gcc41-mt" part in my build, I've assumed that is necessary) In my Makefile, I have "-l boost_thread" which the linker translates into libboost_thread.so which in turn is linked by the OS to libboost_thread.so.1.33.1
thanks, James
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users