I have a poorly designed library that has implementations of non-inline functions in a header file. 
My project which has to use the library relies on it, but it produces duplicate definitions of all the non-inlinefunctions in the header file upon linking. 
An easy fix is to declare the functions inline and compile as usual, an even better fix is to move the implementation files to their own .cpp files and compile the rest as a library. 
So my question is twofold: 1) If I declare the functions inline, will it affect their behaviour, i.e. is it possible that a name collision might not be occuring normally but will after I declare the functions inline. e.g. can it make them not-thread-safe. 2) (Optional) Is there a textbook or a detailed guide to compiling dynamically linked libraries under Linux/OS X.
