The following code chunk demonstrates the problem. This code will not link under 2.96.69 of gcc. It works fine under 2.95 (linux 6.1) class fred { public: fred(){}; virtual ~fred() {}; void func() { static fred tmp; }; }; int main(int argc, char *argv[]) { fred f; return 0; } It seems to be the combination of a virtual destructor and the static data in func which causes it.
Actually, the virtual has no effect here. Should be fixed in gcc-c++-2.96-71.