c - "PTHREAD_RWLOCK_INITIALIZER undeclared"构建RTEMS错误

标签 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: error: 'PTHREAD_RWLOCK_INITIALIZER' undeclared (first use in this function)”

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

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

最佳答案

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

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

关于c - "PTHREAD_RWLOCK_INITIALIZER undeclared"构建RTEMS错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677964/

相关文章:

c - 汇编和调用栈

c - 读取一串整数并用它们创建一个数组

ios - 从 C 库调用 objective-c 方法

linux - 我可以假设 .cache 目录存在吗?

c - Linux O_PATH 文件描述符的语义?

在普通的旧 C 中抛弃 volatile

c - segmentation fault和segmentation fault core dumped的区别

QT、wxwidget、MFC

xamarin.forms - 如何在 Xamarin 中更改 MasterMainPage 的导航栏颜色

c - 如果我只是使用 wait() 一次等待 1 个 child 完成,我是否需要对 SIGCHLD 处理程序执行任何操作?