On 24 June 2015 at 19:38, Siddhartha Jain wrote: > /usr/include/string.h:548:5: error: ‘__locale_t’ has not been declared > __locale_t __loc) This indicates you are either doing something wrong or your C library is severely messed up. /usr/include/string.h is part of the C library, and the type __locale_t should be defined by another header in the C library, /usr/include/xlocale.h > there are a couple of other similar errors but this is the first one > and I thought it might be because the system gcc is 4.4.7 and it's > using the executable for gcc 4.8.1 No, that should work fine (and it does, I use such a setup frequently). I suggest you stop adding anything to C_INCLUDE_PATH. If you just invoke gcc 4.8.1 it should know how to find all the standard C and C++ headers it needs, without your help. If that still doesn't work and you want further help you will need to show the exact gcc or g++ command that causes the error, as well as any environment variables such as C_INCLUDE_PATH and CXX that you might have set that would confuse things. We can't guess what the problem is if you don't tell us exactly what you're doing.