Machinekit笔记---Machinekit-hal,Machinekit-cnc的安装

  最近在安装machinekit,这鬼东西着实把我恶心坏了。在这里我准备进行一下安装流程介绍,也算是一个笔记,防止自己以后忘记怎么避开这些坑。
  Machinekit算是LinuxCNC的一个界面版。在以前,它的版本就是一个整体的Machinekit。但是最近开发组把它分为了两个部分,一部分是machinekit-hal(硬件抽象层),一部分是machinekit-cnc。

注意:截止2020年8月底,无论是Machinekit还是最新版的Machinekit-cnc,都不支持arm64

Machinekit的安装有三个选择:

1、安装旧版本Machinekit整体版,使用交叉编译建立.deb安装包的方式。(前人验证,推荐,适用armhf架构)
推荐连接 https://blog.csdn.net/weixin_37974171/article/details/106456514

2、单独安装machinekit-hal,或者machinekit-cnc。(不推荐)
官方网址 http://www.machinekit.io/docs/developing/machinekit-developing/
目前根据官方的说法,最新版Machinekit-CNC已经停止维护(github查看最新修改是一年前),而且Machinekit-CNC的适配性已经很不灵活,官方建议改为安装EMCApplication。

3、使用build_with_cnc自动编译安装(推荐)
第三种方式个人比较推荐,虽然和第二种有异曲同工之处,但是按照第二种参照官方的说明的话,会遇到很多BUG。

下面开始讲解第三种方式

1、安装machinekit-hal,machinekit-cnc需要的必备组件。

(1)安装 build package

sudo apt-get install build-essential fakeroot devscripts

(2)安装machinekit-cnc需要的依赖

cython
uuid-runtime 
libczmq-dev
python-protobuf
libjansson-dev
liburiparser-dev
libwebsockets-dev
uuid-dev
libavahi-client-dev
libcgroup-dev
python-pyftpdlib
libmodbus-dev
libusb-1.0-0-dev
libgtk2.0-dev
psmisc
yapps2
python-tk 
tcl-dev 
tk-dev
libreadline-dev
libboost-dev
libboost-python-dev 
libxmu-dev
libprotobuf-dev 
protobuf-compiler
libboost-python-dev
libxaw7-dev

这些是之前博主踩到坑以后找到的,这里不再详述作用,直接安装即可。

(3)安装protobuf-2.6.1
推荐安装指导链接:https://blog.csdn.net/u012414189/article/details/84074036

2、下载machinekit-hal的源码

git clone https://github.com/machinekit/machinekit-hal.git

使用git工具reset一个很久以前的machinekit版本id

git reset --hard e81023b    //完整版commit id e81023b8b9ae49a9e971d9da6d424297061772bc 
cd machinekit-hal

3、执行./scripts/build_with_cnc,自动编译安装hal和cnc
*说明:这个build_with_cnc是一年前开发组为了方便用户一键直接安装machinekit-hal和machinekit-cnc,写出来的一个脚本,但是最近github更新后这个脚本更新没了。巨坑爹。

./scripts/build_with_cnc

此脚本会自动编译安装machinekit-hal,并且会自动下载machinekit-cnc并编译安装。
安装完成后,即可使用完整的machinekit(安装过程会缺少很多组件,一一安装即可)

qq交流群 1061149302 ,欢迎加入,一起交流

下面是build_with_cnc源码,可根据需要自行修改。

#!/bin/bash

set -e

MKHAL_DIR="$(pwd)"

cd src

if ! [ -e configure ]; then
	./autogen.sh
fi
if ! [ -e config.h ]; then
	./configure
fi

make clean
make -j "$(nproc)"

sudo make setuid

cd ../

if [ -e machinekit-cnc ]; then
	echo "Using existing machinekit-cnc checkout."
else
	git clone https://github.com/machinekit/machinekit-cnc
fi

cd machinekit-cnc/src

if ! [ -e configure ]; then
	./autogen.sh
fi
if ! [ -e config.h ]; then
	./configure --with-machinekit-hal="$MKHAL_DIR"
fi

make clean
make -j "$(nproc)"

cd ../

cp -f bin/* "$MKHAL_DIR"/bin ;
cp -f -R configs "$MKHAL_DIR" ;
cp -f -L -R include/* "$MKHAL_DIR"/include ;
cp -f -L -R lib/*  "$MKHAL_DIR"/lib ;
cp -f -R nc_files "$MKHAL_DIR" ;
cp -f -R rtlib/* "$MKHAL_DIR"/rtlib ;
cp -f -R share/* "$MKHAL_DIR"/share ;
sed -i 's|\/machinekit-cnc||g' tcl/linuxcnc.tcl ;
cp -f -R tcl/* "$MKHAL_DIR"/tcl ;
cp -f -R www "$MKHAL_DIR" ;

cp -f machinekit* "$MKHAL_DIR" ;

sed -i 's|\/machinekit-cnc||g' scripts/linuxcnc ;
tar c --exclude=build_docker --exclude=build_source_package  scripts/* | ( cd "$MKHAL_DIR/" && tar x --verbose )

cd ../

. ./scripts/rip-environment 

echo "********************************"
echo "Ready to run full machinekit RIP"
echo "********************************"

你可能感兴趣的:(LinuxCNC系列,linux,ethercat,嵌入式)