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.

money_put.txt · Last modified: 2014/07/11 15:42 by jim
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0