Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法链接solaris studio上的bost_线程_C++_Multithreading_Boost_Solaris 10 - Fatal编程技术网

C++ 无法链接solaris studio上的bost_线程

C++ 无法链接solaris studio上的bost_线程,c++,multithreading,boost,solaris-10,C++,Multithreading,Boost,Solaris 10,我试图编译并运行boost线程的简单示例(参见下面的代码),但当我试图运行该程序时,总是会出现“分段错误(内核转储)”。我在其他环境中编译并运行该程序,在所有这些环境中都成功了(OSX、linux),我的问题只是在Solaris中。我不知道会发生什么,有人能帮我找出问题出在哪里 命令来编译它 当我试着跑的时候 增强版 MDB输出 Solaris版本 抄送版 基本代码 #包括 #包括 #包括 #包括 使用名称空间std; boost::互斥锁m; 无符号长计数器=0; void funcMutex

我试图编译并运行boost线程的简单示例(参见下面的代码),但当我试图运行该程序时,总是会出现“分段错误(内核转储)”。我在其他环境中编译并运行该程序,在所有这些环境中都成功了(OSX、linux),我的问题只是在Solaris中。我不知道会发生什么,有人能帮我找出问题出在哪里

命令来编译它 当我试着跑的时候 增强版 MDB输出 Solaris版本 抄送版 基本代码
#包括
#包括
#包括
#包括
使用名称空间std;
boost::互斥锁m;
无符号长计数器=0;
void funcMutex()
{

Boost的那个版本看起来很旧,你能升级吗?也就是说,你能使互斥锁非全局的吗?因为从回溯来看,错误似乎发生在构造全局的过程中(不是互斥锁,但可能是相关的)。此外,如果只使用一个线程或根本不使用线程,会发生同样的情况吗?如果你在任何地方都不使用互斥锁怎么办?非常感谢你的回答。我很难更改boost版本,因为在该环境中,还运行其他使用该版本boost的应用程序(是的,是旧应用程序),无论如何,我将尝试设置一个新版本的boost。关于你的另一个问题,当我删除boost的互斥体和线程的所有引用,只保留include时,我有相同的错误(分段错误(内核转储)).那么,你还有什么其他建议吗?我可以尝试或检查一下吗?我能提供的其他建议很少,我对Solaris知之甚少。不过,我会尝试进一步简化示例。此外,我会检查命令行上传递的哪些编译器标志是必要的,以及出于什么原因,可能它们会更改命令行中的某些二进制接口编译后的代码和一些库不再交互的方式。
-bash-3.00$ CC -m64 -L/export/home/ulcm/standalone/lib -lboost_thread -pthreads -DC7_Q -D_REENTRANT -I/export/home/ulcm/standalone/include -o main main.cpp
CC: Warning: Option -pthreads passed to ld, if ld is invoked, ignored otherwise 
-bash-3.00$ ./main
Segmentation Fault (core dumped)
1.48.0
-bash-3.00$ mdb ./main ./core
Loading modules: [ ld.so.1 libc.so.1 ]
> ::status
debugging core file of main (64-bit) from sgdev0
file: main
initial argv: ./main
threading model: multi-threaded
status: process terminated by SIGSEGV (Segmentation Fault)
>
> ::stack
libc.so.1`memcpy+0x1880()
libCstd.so.1`__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Hreserve6ML_v_+0x3a()
libstlport.so.1`__1cDstdG__copy4Cpkcn0AUback_insert_iterator4n0AMbasic_string4Ccn0ALchar_traits4C    c__n0A
Jallocator4Cc______Cl_6FTA3TBrkn0AbArandom_access_iterator_tag_pTC_4_+0x40e()
libstlport.so.1`__1cDstdO_Init_timeinfo6Frn0AK_Time_Info__v_+0x3c0()
libstlport.so.1`__1cDstdM_Locale_implTmake_classic_locale6F_p1_+0x472()
libstlport.so.1`__1cDstdGlocaleN_S_initialize6F_v_+0xe()
libstlport.so.1`__SLIP.INIT_A+0x10()
libstlport.so.1`_init+0x6d()
ld.so.1`call_init+0x10a()
ld.so.1`setup+0xa5e()
ld.so.1`_setup+0x2d0()
ld.so.1`_rt_boot+0x6d()
0xfffffd7fffdffd18()
>
-bash-3.00$ cat /etc/release
                       Solaris 10 10/08 s10x_u6wos_07b X86
           Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 27 October 2008
-bash-3.00$ CC -V
CC: Sun C++ 5.11 SunOS_i386 2010/08/13
usage: CC [ options ] files.  Use 'CC -flags' for details