来自 Debian i Xenomai 的 Migrati progest 2.x Debian 9 Xenomai 3.x

Migrate project from Debian 8 Xenomai 2.x to Debain 9 Xenomai 3.x

由于新的 PC 硬件,我必须使用 debain 9 和 Xenomai 3。Xenomai 在系统上 运行ning,我 运行 测试套件脚本。我在 xenomai.org 上找到了一个迁移文档,并在我的源代码中更改了 includepaths 等。但是现在当我想编译代码时,我得到了这个错误

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 中定义的(见下文)

有人知道为什么吗?

这里是headers:

task.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 */

trank.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 */

我必须使用 Transition Kit,所以我添加了 "gcc $(xeno-config --skin=native --cflags)" 和 -ldflags