|
Boost-Build : |
From: leomaheo (LeoMaheo_at_[hidden])
Date: 2005-03-03 10:48:49
Hi!
I'm using the Boost shared_ptr and weak_ptr classes, and the Boost
Date-Time package. I'm using STLport, and do not want to distribute
any MSVCR71.dll with my application. I do not know much about linking
and how the linker selects which .lib-file to use, and I wonder
whether it is possible to use Boosts without MSVCR71.dll. Is it
possible?
There are additional questions below, so, if you have time, please
continue reading...
I build Boost like this:
bjam "-sTOOLS=vc7.1-stlport"
"-sSTLPORT_PATH=C:\Dev\MySTLportDirectory" "-sSTLPORT_VERSIONS=4.6"
"--prefix=C:\Dev\Boost" "--exec-prefix=C:\Dev\Boost\vc7.1-stlport"
"--builddir=C:\Unextracted\Boost\vc7.1-stlport_buildDir" install
and then several versions of the Date-Time package (and other packages
as well) are created:
boost_date_time-vc71-mt-gdp-1_31.dll
boost_date_time-vc71-mt-p-1_31.dll
boost_date_time-vc71-mt-gdp-1_31.lib
boost_date_time-vc71-mt-gdp.lib
boost_date_time-vc71-mt-p-1_31.lib
boost_date_time-vc71-mt-p.lib
libboost_date_time-vc71-mt-gdp-1_31.lib
libboost_date_time-vc71-mt-gdp.lib
libboost_date_time-vc71-mt-p-1_31.lib
libboost_date_time-vc71-mt-p.lib
libboost_date_time-vc71-mt-sgdp-1_31.lib
libboost_date_time-vc71-mt-sgdp.lib
libboost_date_time-vc71-mt-sp-1_31.lib
libboost_date_time-vc71-mt-sp.lib
libboost_date_time-vc71-sgdp-1_31.lib
libboost_date_time-vc71-sgdp.lib
libboost_date_time-vc71-sp-1_31.lib
libboost_date_time-vc71-sp.lib
The Boost "Getting Started" information says the "s" in a library name
means "Static link to runtime". Can anyone please explain what this
means? E.g., what is the difference between the following two libs?
libboost_date_time-vc71-mt-p.lib
libboost_date_time-vc71-mt-sp.lib
How do I know which version (i.e. with or without "s") the linker
selects?
Another question: what is the difference between the two libs below?
(I guess the first one is used to dynamically attach to
boost_date_time-vc71-mt-p-1_31.dll in some way, wheareas the second
one itself contains all code provided by the .dll file?)
boost_date_time-vc71-mt-p.lib
libboost_date_time-vc71-mt-p.lib
Another question: I've checked some Boost headers, and I think it
seems they include <vector> and then declare a vector, but they do not
prepend _STL:: (i.e. the declaration read "vector someVector" not
"_STL::vector someVector"). I haven't seen any "using namespace _STL"
directive; is it really _STL vectors that are used, or are std vectors
used? If std::vector is used, then it should be impossible to avoid
MSVCR71.dll?
Another question: When I build Boost, I only want to use the Date-Time
package (and shared_ptr and weak_ptr). I added this switch to jam:
"--with-Date-Time", but despite this, all libraries were built again
:-(. Is "--with-Date-Time" incorrect? What should I write instead?
Finally, now when you know what I don't know, would you please like to
expalin how can I get rid of the MSVCR71.dll dependency (if you have
time and haven't already explained this, of course :-))
Best regards, Magnus
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk