关于Solaris构建问题的Mono5
我试图在Solaris 10上构建Mono,但遇到了一个错误“Posix系统不支持递归互斥”。我正试图用gcc 3.4.3来构建它,我已经安装了gmake、gar、granlib和gstrip来取代它们的Solaris替代品。我已经找到了一个可能的解决方案,但是我找不到引用这一行的blog“1)patch/usr/lib/pkgconfig/gthread-2.0.pc以替换位于的-mt选项(参见Jonel的blog)”。该博客不再处于活动状态。有人知道他们所指的补丁可能是什么吗?提前感谢。Solaris 10支持递归互斥锁 Per: PTHREAD\u MUTEX\u RECURSIVE 试图重新锁定此互斥锁而不首先解锁它的线程 将成功锁定互斥锁。重新锁定死锁可能会导致 与类型为关于Solaris构建问题的Mono5,mono,solaris,Mono,Solaris,我试图在Solaris 10上构建Mono,但遇到了一个错误“Posix系统不支持递归互斥”。我正试图用gcc 3.4.3来构建它,我已经安装了gmake、gar、granlib和gstrip来取代它们的Solaris替代品。我已经找到了一个可能的解决方案,但是我找不到引用这一行的blog“1)patch/usr/lib/pkgconfig/gthread-2.0.pc以替换位于的-mt选项(参见Jonel的blog)”。该博客不再处于活动状态。有人知道他们所指的补丁可能是什么吗?提前感谢。So
PTHREAD\u MUTEX\u NORMAL的互斥体一起出现
这种类型的互斥。此互斥锁的多个锁需要相同的密码
在另一个线程启动之前释放互斥锁的解锁次数
获取互斥。试图解锁另一个互斥锁的线程
线程已锁定,将返回一个错误。一个试图
解锁解锁的互斥锁将返回一个错误。这种类型的互斥
仅支持进程共享属性为的互斥体
PTHREAD\u PROCESS\u PRIVATE
此外,根据手册页,所需的编译/链接选项和适当的#include
语句:
cc –mt [ flag... ] file... –lpthread [ library... ]
#include <pthread.h>
cc–mt[标志…]文件…–lpthread[库…]
#包括
注意添加了-lpthread
。我怀疑你提到的博客说用-mt-lpthread
替换-mt
(我在这里重复的Unix问题推动了对这个问题的进一步研究)
您将\u XOPEN\u SOURCE
设置为的确切值并不重要。Mono错误地定义了\u XOPEN\u SOURCE\u EXTENDED
宏:
case "${host}" in
*solaris* )
AC_MSG_CHECKING(for Solaris XPG4 support)
if test -f /usr/lib/libxnet.so; then
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600"
CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1" <-- WRONG
LIBS="$LIBS -lxnet"
\u XPG6
已定义:
/*
*_XOPEN_源的使用
*
*支持以下X/Open规范:
*
*X/Open便携性指南,第3期(XPG3)
*X/Open CAE规范,第4版(XPG4)
*X/Open CAE规范,第4期,第2版(XPG4v2)
*X/Open CAE规范,第5期(XPG5)
*开放式集团技术标准第6版(XPG6),也称为
*IEEE标准1003.1-2001和ISO/IEC 9945:2002。
*
*XPG4v2也称为UNIX 95(SUS或SUSv1)。
*XPG5也称为UNIX 98或单一UNIX规范,
*第2版(SUSv2)
*XPG6是X/Open和POSIX规范合并的结果
*因此,在中也被称为IEEE标准1003.1-2001
*添加到UNIX 03和SUSv3。
*
*按照规范编写合格的X/Open应用程序时
*根据要求,必须在以下位置定义适当的特性测试宏:
*编译时。这些措施如下。有关更多信息,请参见标准(5)。
*
*特性测试宏规范
* ------------------------------------------------ -------------
*XOPEN源XPG3
*源代码和版本=4 XPG4
*_XOPEN_SOURCE&&u XOPEN_SOURCE_EXTENDED=1 XPG4v2
*_XOPEN_源=500 XPG5
*_XOPEN_SOURCE=600(或POSIX_C_SOURCE=200112L)XPG6
*
*为了简化标头内的防护,请执行以下操作
*已创建实现专用测试宏。应用
*不得使用这些专用测试宏,因为会出现意外结果
*发生。
*
*请注意,通常情况下,这些专用宏的使用是累积的。
*例如,在X/Open上没有其他限制的情况下使用_XPG3
*命名空间将使XPG3到XPG6的符号可见
*编译环境。在没有其他X/Open的情况下使用_XPG4_2
*命名空间限制表示符号是在中引入的
*因此,XPG4v2通过XPG6编译对XPG4v2可见
*环境,但不适用于XPG3或XPG4编译环境。
*
*_XPG3 X/开放式便携性指南,第3期(XPG3)
*\u XPG4 X/开放式CAE规范,第4期(XPG4)
*_XPG4_2 X/Open CAE规范,第4期,第2版(XPG4v2/UNIX 95/SUS)
*_XPG5 X/Open CAE规范,第5期(XPG5/UNIX 98/SUSv2)
*_XPG6开放组技术标准,第6期(XPG6/UNIX 03/SUSv3)
*/
/*X/Open便携性指南,第3期*/
#如果定义(_XOPEN_SOURCE)&(_XOPEN_SOURCE-0<500)&&\
(_XOPEN_VERSION-0<4)和&!已定义(\u XOPEN\u SOURCE\u EXTENDED)
#定义_XPG3
/*X/Open CAE规范,第4版*/
#elif(已定义(\uxOpen\uSource)&&&uxOpen\uVersion-0==4)
#定义\u XPG4
#定义_XPG3
/*X/Open CAE规范,第4版,第2版*/
#elif(已定义(_XOPEN_SOURCE)&&&u XOPEN_SOURCE_EXTENDED-0==1)
#定义\u XPG4\u 2
#定义\u XPG4
#定义_XPG3
/*X/Open CAE规范,第5期*/
#elif(_XOPEN_SOURCE-0==500)
#定义_XPG5
#定义\u XPG4\u 2
#定义\u XPG4
#定义_XPG3
#未定义POSIX C_源
#定义POSIX_C_SOURCE199506L
/*开放式集团技术标准,第6期*/
#elif(_XOPEN_SOURCE-0==600)| |(_POSIX_C_SOURCE-0==200112L)
#定义_XPG6
#定义_XPG5
#定义\u XPG4\u 2
#定义\u XPG4
#定义_XPG3
#未定义POSIX C_源
#定义\u POSIX\u C\u源200112L
#未定义(XOPEN)源
#定义_XOPEN_源600
#恩迪夫
wayback机器有一份日志副本。
/*
* It is invalid to compile an XPG3, XPG4, XPG4v2, or XPG5 application
* using c99. The same is true for POSIX.1-1990, POSIX.2-1992, POSIX.1b,
* and POSIX.1c applications. Likewise, it is invalid to compile an XPG6
* or a POSIX.1-2001 application with anything other than a c99 or later
* compiler. Therefore, we force an error in both cases.
*/
#if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))
#error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
and pre-2001 POSIX applications"
#elif !defined(_STDC_C99) && \
(defined(__XOPEN_OR_POSIX) && defined(_XPG6))
#error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications \
require the use of c99"
#endif
/*
* Use of _XOPEN_SOURCE
*
* The following X/Open specifications are supported:
*
* X/Open Portability Guide, Issue 3 (XPG3)
* X/Open CAE Specification, Issue 4 (XPG4)
* X/Open CAE Specification, Issue 4, Version 2 (XPG4v2)
* X/Open CAE Specification, Issue 5 (XPG5)
* Open Group Technical Standard, Issue 6 (XPG6), also referred to as
* IEEE Std. 1003.1-2001 and ISO/IEC 9945:2002.
*
* XPG4v2 is also referred to as UNIX 95 (SUS or SUSv1).
* XPG5 is also referred to as UNIX 98 or the Single Unix Specification,
* Version 2 (SUSv2)
* XPG6 is the result of a merge of the X/Open and POSIX specifications
* and as such is also referred to as IEEE Std. 1003.1-2001 in
* addition to UNIX 03 and SUSv3.
*
* When writing a conforming X/Open application, as per the specification
* requirements, the appropriate feature test macros must be defined at
* compile time. These are as follows. For more info, see standards(5).
*
* Feature Test Macro Specification
* ------------------------------------------------ -------------
* _XOPEN_SOURCE XPG3
* _XOPEN_SOURCE && _XOPEN_VERSION = 4 XPG4
* _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1 XPG4v2
* _XOPEN_SOURCE = 500 XPG5
* _XOPEN_SOURCE = 600 (or POSIX_C_SOURCE=200112L) XPG6
*
* In order to simplify the guards within the headers, the following
* implementation private test macros have been created. Applications
* must NOT use these private test macros as unexpected results will
* occur.
*
* Note that in general, the use of these private macros is cumulative.
* For example, the use of _XPG3 with no other restrictions on the X/Open
* namespace will make the symbols visible for XPG3 through XPG6
* compilation environments. The use of _XPG4_2 with no other X/Open
* namespace restrictions indicates that the symbols were introduced in
* XPG4v2 and are therefore visible for XPG4v2 through XPG6 compilation
* environments, but not for XPG3 or XPG4 compilation environments.
*
* _XPG3 X/Open Portability Guide, Issue 3 (XPG3)
* _XPG4 X/Open CAE Specification, Issue 4 (XPG4)
* _XPG4_2 X/Open CAE Specification, Issue 4, Version 2 (XPG4v2/UNIX 95/SUS)
* _XPG5 X/Open CAE Specification, Issue 5 (XPG5/UNIX 98/SUSv2)
* _XPG6 Open Group Technical Standard, Issue 6 (XPG6/UNIX 03/SUSv3)
*/
/* X/Open Portability Guide, Issue 3 */
#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 < 500) && \
(_XOPEN_VERSION - 0 < 4) && !defined(_XOPEN_SOURCE_EXTENDED)
#define _XPG3
/* X/Open CAE Specification, Issue 4 */
#elif (defined(_XOPEN_SOURCE) && _XOPEN_VERSION - 0 == 4)
#define _XPG4
#define _XPG3
/* X/Open CAE Specification, Issue 4, Version 2 */
#elif (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE_EXTENDED - 0 == 1)
#define _XPG4_2
#define _XPG4
#define _XPG3
/* X/Open CAE Specification, Issue 5 */
#elif (_XOPEN_SOURCE - 0 == 500)
#define _XPG5
#define _XPG4_2
#define _XPG4
#define _XPG3
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199506L
/* Open Group Technical Standard , Issue 6 */
#elif (_XOPEN_SOURCE - 0 == 600) || (_POSIX_C_SOURCE - 0 == 200112L)
#define _XPG6
#define _XPG5
#define _XPG4_2
#define _XPG4
#define _XPG3
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200112L
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE 600
#endif