由于新的 PC 硬件,我必须使用 debain 9 和 Xenomai 3。Xenomai 在系统上运行,我运行测试套件脚本。我在 xenomai.org 上找到了一个迁移文档,并在我的源代码中更改了包含路径等。但是现在当我想编译代码时,我得到了这个错误
In file included from ./CSRTPosixQue.h:20:0,
from ./CSRTTask.h:20,
from main.cpp:26:
/usr/xenomai/include/trank/native/task.h: In function ‘int rt_task_notify(RT_TASK*, rt_sigset_t)’:
/usr/xenomai/include/trank/native/task.h:41:64: error: ‘trank_warning’ was not declared in this scope
trank_warning("in-kernel native API is gone, rebase over RTDM");
但是这个“trank_warning”是在包含的 trank.h 中定义的(见下文)
有人知道为什么吗?
这里的标题:
任务.h
/*
* Copyright (C) 2014 Philippe Gerum <rpm@xenomai.org>.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#ifndef _XENOMAI_TRANK_NATIVE_TASK_H
#define _XENOMAI_TRANK_NATIVE_TASK_H
#include <errno.h>
#include <alchemy/task.h>
#include <trank/trank.h>
#include <trank/native/types.h>
#define T_FPU 0
#define T_NOSIG 0
#define T_SUSP __THREAD_M_SPARE7
/* bit #24 onward are otherwise unused. */
#define T_CPU(cpu) (1 << (24 + (cpu & 7)))
#define T_CPUMASK 0xff000000
#ifdef __cplusplus
extern "C" {
#endif
__deprecated
static inline int rt_task_notify(RT_TASK *task, rt_sigset_t sigs)
{
trank_warning("in-kernel native API is gone, rebase over RTDM");
return -ENOSYS;
}
COMPAT_DECL(int, rt_task_create(RT_TASK *task, const char *name,
int stksize, int prio, int mode));
COMPAT_DECL(int, rt_task_spawn(RT_TASK *task, const char *name,
int stksize, int prio, int mode,
void (*entry)(void *arg), void *arg));
COMPAT_DECL(int, rt_task_set_periodic(RT_TASK *task,
RTIME idate, RTIME period));
#ifdef __cplusplus
}
#endif
#endif /* _XENOMAI_TRANK_NATIVE_TASK_H */
坦克.h
/*
* Copyright (C) 2014 Philippe Gerum <rpm@xenomai.org>.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#ifndef _XENOMAI_TRANK_TRANK_H
#define _XENOMAI_TRANK_TRANK_H
#include <boilerplate/compiler.h>
#ifdef __XENO_COMPAT__
#ifdef __cplusplus
extern "C" {
#endif
void warning(const char *fmt, ...);
#ifdef __cplusplus
}
#endif
#define trank_warning(__fmt, __args...) \
warning("%s: " __fmt, __func__, ##__args)
#define __CURRENT(call) __current_ ## call
#define COMPAT_DECL(T, P) __typeof__(T) P
#define CURRENT_DECL(T, P) __typeof__(T) __CURRENT(P)
#else /* !__XENO_COMPAT__ */
#define __CURRENT(call) call
#define COMPAT_DECL(T, P)
#define CURRENT_DECL(T, P) __typeof__(T) P; \
__typeof__(T) __current_ ## P
#define CURRENT_IMPL(T, I, A) \
__typeof__(T) I A __attribute__((alias("__current_" __stringify(I)), weak)); \
__typeof__(T) __current_ ## I A
#endif /* !__XENO_COMPAT__ */
#endif /* _XENOMAI_TRANK_TRANK_H */