Hi,

I am currently using GCC 4.4.4 on my Solaris machine and I am having a
difficult time getting it to compile with "locale-support".

For example, if I build the simple file:

#include <iostream>

int main()
{
  std::cout.imbue(std::locale("en_US.UTF-8"));
  return 0;
}

and run it, it will throw a runtime exception -- "std::runtime_error:
locale::facet::_S_create_c_locale name not valid"

I've stepped through the GCC code and I notice that there is code in
c++locale.cc (libstdc++v3 folder) that looks something like this:

If (locale being used is NOT “C” and NOT “POSIX”)
{
   throw std::runtime_error(“locale::facet::_S_create name not valid”);
}

So, I am guessing that the problem here, is that GCC is not build with
"locale-support" and therefore, I am only allowed to use "C" and
"POSIX" locales.  Is this correct?  Also, I am guessing if that if I
rebuild GCC to support locales, that I can use locales other than "C"
or "POSIX" on Solaris.

I tried rebuilding GCC 4.4.4 with the flag "--enable-clocale=gnu" and
it still crashed in the same location.  I also tried building GCC with
the flag "--enable-clocale=ieee_1003.1-2001", and this time, it didn't
even build.

So, I was wondering if there is something that I haven't tried that
someone can suggest?  I'd like to build GCC so that I can use UTF-8
locales.

Thanks,
J

Reply via email to