Okay I have 2 questions and again, firstly about distribution.

Okay I come from a java background so c++ is a big change in terms of how it works, I have mainly been using libraries from STL but have now found myself needing external libraries like boost, wxwidgets and a few other less known ones and etc.

My question is that many of them come as shared libraries which means if I compile and give it to someone, they will need to download and install those libraries right?

Could I instead get the source of each of those libraries and instead building those source code into static or shared library just include them in my program and let the compilation of my program build all the necessary files that I include and this should include all the .obj files and necessary code into my final executable right? Like compiling with a static library.

I know ideally I should use shared libraries to minimize my executable size but maybe i'm not understanding how to distribute my program when I use shared libraries. (This is the side effect of coming from a Java background where these are simplified and mostly transparent)

Or do these libraries work differently and I have to build them before I use them? I'm just wondering how can I make my final app portable without needing anyone to install anything? Or do i have to create a installer package with all the libraries I use and i'm responsible for automating the build and etc??? I hope not.

Lastly a very quick question, I don't think STL has any support for parsing, reading/writing xml files right? Anyone know a good library for XML in c++ ? I haven't see any in Boost either (i think)

Thanks for any help,
please help with my silly confusion.