Hi, We have to port code to gcc 4.2.1 (linux), and most works well, except instantiation of templates in a dynamic library. I generated a minmal example to clearify my problem: // ********** TemplateTest.H #ifndef TESTCLASS #define TESTCLASS template <class X> class TestClass { public: TestClass(const X &x) : m_x(x) {} X getX(); private: X m_x; }; #endif // ********* TemplateTest.cpp #include "TestClass.H" template <class X> X TestClass<X>::getX() { return this -> m_x; } template class TestClass<int>; // *********** testMain.cpp #include "TestClass.H" int main(int argc, char **argv) { TestClass<int> a(4); a.getX(); return 0; } So I compile (here as well, I took away all flags I think are not important here): g++ -I. -c TestClass.cpp g++ -shared -o libTestClass.so TestClass.o g++ -I. -L. -lTestClass testMain.cpp The first two commands work fine, but the compilation of testMain reveals (as the nm command does) that the symbols are not defined: testMain.cpp:(.text+0x31): undefined reference to `TestClass<int>::getX()' I read some information, like the gcc manual (http://gcc.gnu.org/onlinedocs/gcc-4.4.1/gcc/Template-Instantiation.html#Template-Instantiation), but my attempts to follow the advises were without success. Thanks to anybody who can make my example work without forcing the implementation of getX() to be compiled into any object using it or making getX inline. I know which instantiations I need (here just int) when building the library. Greetings Volker