【发布时间】:2010-11-08 14:07:21
【问题描述】:
我有一段 C/C++ 代码,它使用 __thread 关键字进行线程本地存储,但在使用 g++(版本 4.0.2)在 64 位 Solaris Sparc 上编译它时遇到了问题,而它在 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'。
使用 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
非常感谢任何帮助,因为我在周末一直在努力解决这个问题并且面临最后期限。
谢谢, 查尔斯
【问题讨论】:
标签: multithreading gcc sparc thread-local-storage