我有一段 C/C++ 代码,它使用 __thread 关键字进行线程本地存储,但是在使用 g++(版本 4.0.2)的 64 位 Solaris Sparc 上编译它时遇到问题,而它在使用 g++ 的 Linux 上编译和运行正常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”。
使用 g++ 运行 make 时的错误消息是:“错误:此目标不支持线程本地存储”,我使用的编译器选项是
-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
非常感谢任何帮助,因为我在周末一直在努力解决这个问题并且面临最后期限。
谢谢,查尔斯