Boost static linking

前端 未结 2 1843
Happy的楠姐
Happy的楠姐 2020-12-06 17:31

I am using the Boost library in Linux, GCC. After installing and building the Boost, I found that programs using Regex and Thread use shared Boost libraries. For my purposes

相关标签:
2条回答
  • 2020-12-06 17:51

    Just add -static to your build invocation. Here is a quick example session:

    $ cat boost_formatted_time.cpp
    #include <iostream>
    #include <boost/date_time/posix_time/posix_time.hpp>
    #include <boost/date_time/posix_time/posix_time_io.hpp>
    
    using namespace boost::posix_time;
    using namespace std;
    
    int main(int argc, char **argv) {
      time_facet *facet = new time_facet("%d-%b-%Y %H:%M:%S");
      cout.imbue(locale(cout.getloc(), facet));
      cout << second_clock::local_time() << endl;
    }
    $ g++ -o /tmp/bft_dyn boost_formatted_time.cpp -lboost_date_time
    $ g++ -static -o /tmp/bft_stc boost_formatted_time.cpp -lboost_date_time
    $ ls -lh /tmp/bft_*
    -rwxr-xr-x 1 edd edd 216K 2010-02-24 12:34 /tmp/bft_dyn    
    -rwxr-xr-x 1 edd edd 1.5M 2010-02-24 12:34 /tmp/bft_stc    
    $ /tmp/bft_dyn
    24-Feb-2010 12:34:55
    $ /tmp/bft_stc
    24-Feb-2010 12:34:59
    $
    

    Note how the static binary is 1.5mb as opposed to 216kb for the dynamically-linked variant. All done on Debian testing with the default Boost packages.

    0 讨论(0)
  • 2020-12-06 18:05

    Specify -Lpath/to/library/ to the linker.

    0 讨论(0)
提交回复
热议问题