====== GCC 3.3 and std::money_put_w ======
For reasons beyond my control, at work we have a deployment built from GCC 3.3 running on CentOS 4 and 5.
I've had a mysterious link failure when setting up a new build machine. I'm installing the compiler from packages found somewhere on the net.
When I try to link, I get this error:
/usr/bin/ld: ../../../../common/lib/third-party/log4cplus/bin/gcc-3.3/debug/liblog4cplus.so: undefined versioned symbol name std::money_put_w@@GLIBCPP_3.2
This is pretty weird, since my code doesn't go anywhere ''std::money_put()''. Google turns up someone else having the problem way in the past, so I thought I'd note the solution.
After much fiddling around, I found the cause. I was building on a CentOS 5 system. The package I used to install G++ 3.3 was ''compat-gcc33-c++-3.3.6-1''. It didn't link ''libstdc++.so'' into the GCC arch/version directory. The ''.a'' static library was there, but the ''.so'' needs to be there too.
# cd /usr/lib/gcc/i386-redhat-linux/3.3.6
# ln -s ../../../libstdc++.so.5.0.7 libstdc++.so
fixed the problem.