建立RTEMS时出现“PTHREAD_RWLOCK_INITIALIZER未声明”错误

时间:2014-10-31 15:16:22

标签: c cross-platform posix configure rtems

在建立RTEMS-4.11时发生错误并使用了配置参数“--enable-posix” 在源文件“posix / src / prwlockinit.c”

if ( *rwlock == PTHREAD_RWLOCK_INITIALIZER ) {
  eno = pthread_rwlock_init( rwlock, NULL );
} else {
  eno = 0;
}

日志显示“cpukit / posix / src / prwlockinit.c:42:19:错误:'PTHREAD_RWLOCK_INITIALIZER'未声明(首次在此函数中使用)”

当我使用shell命令:grep -r“PTHREAD_RWLOCK_INITIALIZER”在rtems源难以处理时,我对此宏声明没有任何意义。

我怎么能用“--enable-posix”而不是“--disable-posix”修复这个问题?

1 个答案:

答案 0 :(得分:0)

您需要使用最新的编译器。问题是在你的gcc中编译的libc(newlib)已经过时了。 PTHREAD_RWLOCK_INITIALIZER于2013年1月添加。

最好的办法是使用RTEMS Source Builder为您使用的任何版本的RTEMS创建最新的编译器。对于当前RTEMS的“主”分支,那将是版本4.11。