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.