У меня есть фрагмент кода C / C ++, который использует ключевое слово __thread для локального хранилища потоков, но не может его скомпилировать на 64-битном Solaris Sparc с g ++ (версия 4.0.2), хотя он компилируется и работает нормально на linux с компилятор g ++ 34. Вот пример исходного кода:
__thread int count = 0;
Информация компилятора из команды 'g ++ -dumpversion' возвращает '4.0.2', а 'g ++ -dumpmachine' показывает 'sparc-sun-solaris2.8'. 'uname -a' отображает 'SunOS devsol1 5.9 Generic_118558-26 sun4u sparc SUNW, UltraAX-i2'.
Сообщение об ошибке при запуске make с g ++ выглядит так: «ошибка: локальное хранилище потока не поддерживается для этой цели», и параметр компиляции, который я использую, -
-m64 -g -fexceptions -fPIC -I../fincad -I/usr/java_1.6.0_12/include -I/usr/java_1.6.0_12/include/solaris -I/opt/csw/gcc4/lib/sparcv9 -I/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.0.2/sparcv9 -I. -I/usr/include -I/usr/include/iso -I/usr/local/include
Любая помощь очень ценится, так как я боролся с этим на выходных и приближался крайний срок.
Спасибо,
Charles