环境编译:
Linuxcnc编译
参考:https://www.bilibili.com/read/cv26538992/
说下环境我的是ubuntu18.04版,xenomai3.1
1.获取源码
git clone -b master https://ghproxy.com/https://github.com/LinuxCNC/linuxcnc.git //这里一般获取最新的我的是2.10
cd linuxcnc/src/
./autogen.sh
出现问题
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
ps -e | grep apt
我这里显示
3209 ? 00:00:00 apt.systemd.dai
3213 ? 00:00:00 apt.systemd.dai
接下来杀死这些进程(需要根据你自己的进程ID更改命令)
sudo kill 3209
sudo kill 3213
根据实际操作,一般只用执行第一句话就可以了,第二个进行会跟着一起被杀死,前面操作失败后,就按后面的来操作。
接下来非常重要:
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock
到这里才解决前面的问题
sudo apt-get install libudev-dev
sudo apt-get install libmodbus-dev
sudo apt install libgtk-3-dev
sudo apt-get install yapps2
sudo apt-get install intltool
sudo apt-get install bwidget
sudo apt-get install tclx
sudo apt install libreadline-gplv2-dev或libeditreadline-dev
出现问题:
ModuleNotFoundError: No module named 'tkinter' 报错就安装这个
sudo apt-get install tcl-dev tk-dev python3-tk
./configure --with-realtime=uspace原文是这个我改成这个
./configure --with-realtime=xenomai
后面提示可以run就行了。
然后make
make
报错,无法编译~/linuxcnc/src/rtapi/uspace_xenomai.cc,需要参考xenomai的例子/demo/posix/cyclictest修改头文件
uspace_xenomai.cc 头需要参考xenomai的头包含加进去
#include "config.h"
#include "rtapi.h"
#include "rtapi_uspace.hh"
#include <pthread.h>
#include <atomic>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdarg.h>
#include <unistd.h>
#include <fcntl.h>
#include <getopt.h>
#include <signal.h>
#include <sched.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <limits.h>
#include <linux/unistd.h>
#include <sys/prctl.h>
#include <sys/stat.h>
#include <sys/sysinfo.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/utsname.h>
#include <sys/mman.h>
#ifdef HAVE_SYS_IO_H
#include <sys/io.h>
#endif
sudo make setuid
source ../scripts/rip-environment
检测下(很长时间 可以不需要)
runtests
输出 Runtest: 258 tests run, 258 successful, 0 failed + 0 expected, 3 skipped
我这边是Runtest: 259 tests run, 256 successful, 3 failed + 0 expected, 4 skipped
Failed: 不管了
/home/wujianya/linuxcnc/tests/build/header-sanity
/home/wujianya/linuxcnc/tests/io-startup/random/no-tool-in-P0
/home/wujianya/linuxcnc/tests/io-startup/random/tool-in-P0
运行LinuxCNC
linuxcnc
缺包安装
pip install PyOpenGL
ERROR: No matching distribution found for OpenGL
python3 -m pip install PyOpenGL
报Note: Using POSIX non-realtime
源码修改直接不检查xenomai,直接detect_xenomai返回数值非0,看一下行不行,或者改成uname –a显示的东西。修改uspace_rtapi_app.cc下的harden_rt()下rtapi_is_realtime()->detect_realtime()->detect_xenomai()修改strcasestr(u.release,”这里填uname –a后的结果即可”)
报缺少动态库
libcobalt.so.2: cannot open shared object file: No such file or directory
解决:
sudo gedit ~/.bashrc
添加
export LD_LIBRARY_PATH=/usr/xenomai/lib:$LD_LIBRARY_PATH
然后执行
source ~/.bashrc
个人学习流程:
- 基于现有的例子基于TCL/TK的Axis的配置进行相关学习,添加单轴调驱动器回零功能、清报警功能、写io输出功能、读io输入功能。学习下classicladder相关知识。参考文档:linuxcnc_documentation.pdf。