2

构建RTEMS-4.11时出现错误,在源文件“posix/src/prwlockinit.c”中使用了配置参数“--enable-posix”

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

日志显示“cpukit/posix/src/prwlockinit.c:42:19: error: 'PTHREAD_RWLOCK_INITIALIZER' undeclared (first use in this function)”

当我在 rtems 源目录中使用 shell 命令:grep -r "PTHREAD_RWLOCK_INITIALIZER" 时,我对声明的这个宏一无所知。

我如何用“--enable-posix”而不是“--disable-posix”来解决这个问题?

4

1 回答 1

0

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

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

于 2015-02-18T18:56:02.547 回答