George Danchev <danchev@xxxxxxxxx> writes: > Missing symbols are probably related to the following usage pattern (all valid > code in my opinion) of members: > MultiStreambuf::overflow(int c) > MultiStreambuf::sync() > MultiStreambuf::xsputn(char const *buffer, std::streamsize n) > > * all are private virtual; > * all implemented in separate translation unit (multistreambuf.ih); > * all inlined > * dtor for MultiStreambuf class is not explicitly defined. You don't mention it, but the log shows undefined references to the vtable for FBB:MultiStreambuf. I have not looked at the code, but this certainly sounds like a missing key method. Can you show us just the declaration of MultiStreambuf from the .h file? That will let us tell you what the key method is. If that key method is not defined anywhere, then these kinds of errors are possible. > Also I wonder whether the missing symbols has anything to do with: > http://gcc.gnu.org/faq.html#vtables > but then again why is that only observed on armel? Yes, I'm suggesting basically this. It could be happening only on armel because gcc could be making different inlinining decisions on armel. The error can happen when gcc decides not to inline a function marked inline, but to instead call the non-inlined instance; if there is no key method, then gcc never creates a non-inlined instance. I don't have an explanation as to why the inlining decisions would be different; it's possible that that is a compiler bug, or there could be some valid reason. Ian