Ubuntu 18.04.1 LTS
Linux 内核 4.9.38
Xenomai-3.0.5
ipipe-core-4.9.38-x86-3.patch 安装 Xenomai 3.0.5 用户空间库
$cd xenomai-3.0.5
$./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
config.status: creating include/smokey/Makefile
config.status: creating include/trank/Makefile
config.status: creating include/trank/posix/Makefile
config.status: creating include/trank/native/Makefile
config.status: creating include/trank/rtdm/Makefile
config.status: creating include/xenomai/Makefile
config.status: creating doc/Makefile
config.status: creating doc/doxygen/Makefile
config.status: creating doc/doxygen/xeno3prm-common.conf
config.status: creating doc/doxygen/xeno3prm-html.conf
config.status: creating doc/doxygen/xeno3prm-latex.conf
config.status: creating doc/gitdoc/Makefile
config.status: creating doc/asciidoc/Makefile
config.status: creating include/xeno_config.h
config.status: include/xeno_config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
$make CFLAGS=-no-pie -j`nproc` && make install
make[1]: Entering directory '/home/efdas/usr/src/xenomai-3.0.5/scripts'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/efdas/usr/src/xenomai-3.0.5/scripts'
Making all in testsuite
make[1]: Entering directory '/home/efdas/usr/src/xenomai-3.0.5/testsuite'
Making all in latency
make[2]: Entering directory '/home/efdas/usr/src/xenomai-3.0.5/testsuite/latency'
Making all in latency
/bin/bash: line 20: cd: latency: No such file or directory
Makefile:424: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/efdas/usr/src/xenomai-3.0.5/testsuite/latency'
Makefile:420: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/efdas/usr/src/xenomai-3.0.5/testsuite'
Makefile:460: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
答案1
我假设你正在尝试使用西诺迈在 4.9.38 Linux 内核上。由于 Ubuntu 18.04 仅支持 4.15、4.18、5.0 和 5.4。我还假设您正在使用自定义内核。
为了使 Xenomai 正常工作,您需要一个受支持的 Linux 内核版本和一个兼容 glibc。如果您已经在使用自定义内核并且因为 glibc 兼容而选择 Ubuntu 18.04:为什么要使用 4 年前的 Xenomai 替代版本?
我建议使用Xenomai 的当前版本与最新的 Linux 内核(目前只有 5.4支持的对于 x86,Ubuntu 提供的内核无法解决这个问题,因为它们也打过补丁,而 Xenomai 补丁通常只适用于上游内核。
关于测试套件/延迟:测试套件对于运行 Xenomai 来说不是必需的。因此禁用它们也没什么坏处。但是使用测试套件对于识别 glibc 兼容性问题特别有用。
需要明确的是 - 修补 Linux 内核并为 glibc 安装 Xenomai 铜板扩展仅仅是一个开始。你需要改写您想要使用Xenomai实时行为的应用程序。