艰难LinuxCNC(EMC2)源代码安装依赖01

为了写一个圆弧补偿的程序,分析了ode,想再深入了解一下,在linuxCNC(emc2)系统仿真,看看它的算法,没有想到源代码安装,有如此庞大的依赖关系库,因为LinuxCNC的资料比较完善。这个软件只有一半的代码开放,内涵一多半代码没有开放,由于项目源于美国国家标准和技术研究院,也可以理解这样的事情。

现介绍一下linuxCNC软件:

LinuxCNC (增强版机械控制)是机床(车床和铣床)的计算机控制系统;

(传统的是计算机数值控制CNC computer numerical control)。

LinuxCNC 是自由软件,且开放源代码, 现行版本认证协议是GPL and LGPL。

LinuxCNC 包括:

多个图形用户界面,包括一个触摸屏

一个G代码解释器,(RS-274机床编程语言)

一个实时具有前瞻性的运动规划系统

低层机械电子操作(比如传感器和电机)

一个易用的“电子测试板“层面的快速生成你设备的独有配置

一个配备梯形图的PLC编程软件

方便的deb格式安装和Live-CD(嵌入linuxCNC的ubuntu光盘)

它不支持CAD制图,或者,G代码生成机械自动生产的公式。

它可以仿真到9轴运动和支持多样界面

在计算机上LinuxCNC软件上可以完成控制可操作真实的伺服(模拟或者PWM脉宽)并配闭环反馈系统

运动控制特点包括: 切削半径和长度补偿,路径偏差限制在允许的误差范围内,车削螺纹,多轴运动同步,合理的进给率,操作者进给极限限制,和常规速度控制。

支持非笛卡尔运动系统是支持用户的运动动力模型,可以支持的结构(机械结构)包括hexapods 六角并连杆系统

(Steward 平台和类似的感念)和 旋转关节系统的运动支持,

比如PUMA 或者SCARA 机器人,(商业名称:工业机器人industrial rotob,学术名称:机械手臂 manipulator)

/* Steward是20世纪60年代德国工程师,最早提出的六自由度装配平台,应用到机械加工上的就是并连杆机床 */

LinuxCNC 运行在Linux的 实时 扩展上, 支持现行的 2.4 & 2.6 内核,实时扩展应用的是RT-Linux 或者 RTAI 补丁。

安装deb格式和刻录Live-CD是比较快的安装方法,但是开发者如果安装它,尤其是一个新系统,那就比较麻烦了,

我写了我安装的过程,希望为开发者节省安装的时间,

系统: debian squeeze, 604 stable version, i586, version, 裸系统,只有gnome,没有autotools.

硬件: hp nx6120 笔记本电脑, intel pentium m.

1, 首先安装gcc, autoconf, autogen, automake, make, libtool,m4, 这几个软件,我安装的方法是synaptic

打开(左上角的菜单),》系统,》系统管理 》 新立得软件包管理器,  或者在终端中进入超级用户,su, 然后输 synaptic

搜索上述软件,并选择,放入安装光盘,选择并点击《 应用 》执行安装。

2, 下载 LinuxCNC源代码,在终端中直接输入以下指令,在当前文件夹新建linuxcnc-dev,把所有代码下载到此文件夹内,

 git clone git://git.linuxcnc.org/git/linuxcnc.git linuxcnc-dev

3,开始安装,进入linuxcnc-dev 文件夹,

# cd linuxcnc-dev

然后,查看安装命令,

# ls

查看文件,其中有一个README的文件,可以用查看内容,

# cat README (or, nano README or, vi README) 

内容如下:

From the top level directory, switch to the source directory:

  cd src

In the source directory, build LinuxCNC:

  ./configure –enable-run-in-place

  [or, if you do not have a realtime kernel:]

  ./configure –enable-run-in-place –enable-simulator

  make clean

  make

  sudo make setuid

to run the software go back to the top level directory, and issue:

  . scripts/rip-environment

  linuxcnc

根据提示,我们进入src文件夹,

# cd src

然后开始编译配置文件,输入命令

./configure –enable-run-in-place –enable-simulator

4,出现了问题,就是,依赖mesalib,我们就说说安装MesaLib-7.5.1

下载地址:http://downloads.sourceforge.net/project/mesa3d/MesaLib-7.5.1.tar.gz

Mesa-7.5.1的依赖关系,依赖glib-2.0, 而glib-2.0以来Xorg Libraries,

4.1 Xorg Libraries,

详细的安装参考: Xorg-7.7 (因为此版本支持自动下载和安装多个文件)

http://www.linuxfromscratch.org/blfs/view/svn/x/x7lib.html

 Xorg Libraries 以来以下软件,

Fontconfig-2.10.2, Xorg Protocol Headers, libXdmcp-1.1.1, and libxcb-1.9 

我安装的时候,按照这个顺序来的,

 24. X Window System Environment

    * Introduction to Xorg-7.7

    * util-macros-1.17

    * Xorg Protocol Headers

    * makedepend-1.0.4

    * libXau-1.0.7

    * libXdmcp-1.1.1

    * libpthread-stubs-0.3

    * xcb-proto-1.8

    * libxcb-1.9

    * Xorg Libraries 

因为我的系统中有xorg一些文件和glib-2.0,系统是debian的,所以都是成熟的应用包,而没有开发软件包,为了混淆,所以,我把所有的安装路径全部选择到/usr/local, 

  4.1.1, util-macros-1.17

下载地址:

http://xorg.freedesktop.org/releases/individual/util/util-macros-1.17.tar.bz2

ftp://ftp.x.org/pub/individual/util/util-macros-1.17.tar.bz2

./configure $XORG_CONFIG &&

make

make install

这里,我没有设置$XORG_CONFIG $XOR_PREFIX,系统默认的是/usr/local

  4.1.2,Xorg Protocol Headers 

依赖需要:

util-macros-1.17

建议安装:

Sudo-1.8.6p3 and Wget-1.14  (因为两个程序系统自带,所以没有安装,如果安装,下载代码,安装)

安装好依赖关系以后,执行安装命令,因为是多个文件,这个安装和下载的方法很特殊,基于bash脚本,不过很经典,

4.1.2.1, 

命令:

cat > proto-7.7.md5 << "EOF"

1a05fb01fa1d5198894c931cf925c025  bigreqsproto-1.1.2.tar.bz2

98482f65ba1e74a08bf5b056a4031ef0  compositeproto-0.4.2.tar.bz2

998e5904764b82642cc63d97b4ba9e95  damageproto-1.2.1.tar.bz2

4ee175bbd44d05c34d43bb129be5098a  dmxproto-2.3.1.tar.bz2

b2721d5d24c04d9980a0c6540cb5396a  dri2proto-2.8.tar.bz2

e7431ab84d37b2678af71e29355e101d  fixesproto-5.0.tar.bz2

c5f4f1fb4ba7766eedbc9489e81f3be2  fontsproto-2.1.2.tar.bz2

3847963c1b88fd04a030b932b0aece07  glproto-1.4.16.tar.bz2

13c8aedaf98a92e282b7e456c0a5bed9  inputproto-2.2.tar.bz2

677ea8523eec6caca86121ad2dca0b71  kbproto-1.0.6.tar.bz2

ce4d0b05675968e4c83e003cc809660d  randrproto-1.4.0.tar.bz2

1b4e5dede5ea51906f1530ca1e21d216  recordproto-1.14.2.tar.bz2

a914ccc1de66ddeb4b611c6b0686e274  renderproto-0.11.1.tar.bz2

cfdb57dae221b71b2703f8e2980eaaf4  resourceproto-1.2.0.tar.bz2

edd8a73775e8ece1d69515dd17767bfb  scrnsaverproto-1.2.2.tar.bz2

c3b348c6e2031b72b11ae63fc7f805c2  videoproto-2.3.1.tar.bz2

5f4847c78e41b801982c8a5e06365b24  xcmiscproto-1.2.2.tar.bz2

eaac343af094e6b608cf15cfba0f77c5  xextproto-7.2.1.tar.bz2

120e226ede5a4687b25dd357cc9b8efe  xf86bigfontproto-1.2.0.tar.bz2

a036dc2fcbf052ec10621fd48b68dbb1  xf86dgaproto-2.1.tar.bz2

1d716d0dac3b664e5ee20c69d34bc10e  xf86driproto-2.1.1.tar.bz2

e793ecefeaecfeabd1aed6a01095174e  xf86vidmodeproto-2.3.1.tar.bz2

9959fe0bfb22a0e7260433b8d199590a  xineramaproto-1.2.1.tar.bz2

d4d241a4849167e4e694fe73371c328c  xproto-7.0.23.tar.bz2

EOF

这个命令的意思是新建一个文件proto-7.7.md5,内容就是这些md5代码和软件包对应的名字,EOF是终端结束cat的命令,文件中没有。

4.1.2.2,

命令:

mkdir proto &&

cd proto &&

grep -v '^#' ../proto-7.7.md5 | awk '{print $2}' | wget -i- -c \

    -B http://xorg.freedesktop.org/releases/individual/proto/ &&

md5sum -c ../proto-7.7.md5

意思是在终端的当前文件夹 建立一个新的 proto文件夹, 进入文件夹,捕捉 上层文件夹中的proto-7.7.md5文件,

文件中的md5对应的 网址中的md5文件,并用,wget命令下载全部到proto文件夹,

4.1.2.3,

命令:

as_root()

{

  if   [ $EUID = 0 ];        then $*

  elif [ -x /usr/bin/sudo ]; then sudo $*

  else                            su -c \\"$*\\"

  fi 

}

export -f as_root

因为安装中的命令有一个环境应用,as_root, 此命令是定义as_root,并且要求以超级用户的身份来安装程序。

bash -e

进入子终端,(我这里没有什么反义,不过还是找此步骤操作)

4.1.2.4,

命令:

for package in $(grep -v '^#' ../proto-7.7.md5 | awk '{print $2}')

do

  packagedir=${package%.tar.bz2}

  tar -xf $package

  pushd $packagedir

  ./configure $XORG_CONFIG

  as_root make install

  popd

  rm -r $packagedir

done

循环软件包, 捕捉 上层文件夹中proto-7.7.md5文件中的文件名,逐个解压所有的 tar.bz2的文件,然后逐个进入,

执行安装命令./configure $XORG_CONFIG

超级用户 make install

安装完成后删除目录

到此,Xorg Protocol Headers 已经完成安装了,安装的路径是/usr/local, 所以,安装完成后,

为了方便其他程序可以找到此库文件,配置地址很重要,用宏命令 LD_LIBRARY_PATH 和 PKG_CONFIG_PATH 来配置,

4.1.2.5,

LD_LIBRARY_PATH是配置链接库文件的路径,*.so *.a 等后缀的文件地址,我们没有设置$XORG_PREFIX 和 $XORG_CONFIG,

所以默认的是/usr/local, 那么配置LD_LIBRARY_PATH的路径就是 /usr/local/lib

# LD_LIBRARY_PATH=/usr/local/lib

或者

# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

功能是一样的,查看是否配置成功,必须加$符号,

# echo $LD_LIBRARY_PATH 

/usr/local/lib    /* 显示这样的地址就是已经配置的地址 */

 

PKG_CONFIG_PATH是配置*.pc文件的命令,是pkg-config命令的终端环境宏命令,一般软件的库文件都已一个*.pc的文件,内包含相关软件的路径, 头文件和库文件的地址,(比如CFLAGS=/usr/locoal/include  LIBS=/usr/local/lib), 而*.pc的文件一般都放在../../lib/pkgconfig 库文件夹中的pkgconfig文件夹中,所以这个地址我们应该多配置几个,用冒号间隔,

# PKG_CONFIG_PATH=/usr/lib/pkgconfig:/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig

其他查看和其他和LD_LIBRARY_PATH一样, 为什么要用/usr/local/share/pkgconfig,因为Xorg Protocol Headers 有一个库文件是安装到了../../share中的。

注意:如果安装过程中出现异样,重新执行命令即可。

4.1.3, makedepend-1.0.4 

 http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.4.tar.bz2

依赖 Xorg Protocol Headers, (我们刚刚完成了安装和配置)

安装步骤:

./configure $XORG_CONFIG &&

make

make install

4.1.4, libXau-1.0.7 

http://xorg.freedesktop.org/releases/individual/lib/libXau-1.0.7.tar.bz2

依赖 Xorg Protocal Headers

安装步骤:

./configure $XORG_CONFIG &&

make

make install

4.1.4, libXdmcp-1.1.1 

 http://xorg.freedesktop.org/releases/individual/lib/libXdmcp-1.1.1.tar.bz2

依赖 Xorg Protocal Headers

安装步骤:

./configure $XORG_CONFIG &&

make

make install

4.1.5, libpthread-stubs-0.3 

http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.bz2

安装步骤:

./configure –prefix=/usr/local &&

make

make install

4.1.6, xcb-proto-1.8 

http://xcb.freedesktop.org/dist/xcb-proto-1.8.tar.bz2

依赖关系: Python-2.7.3

4.1.6.1, Python-2.7.3

http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz

依赖关系: (建议安装)expat-2.1.0 and libffi-3.0.11

expat-2.1.0

http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz

安装步骤:

./configure –prefix=/usr/local &&

make

make install

libffi-3.0.11

ftp://sourceware.org/pub/libffi/libffi-3.0.11.tar.gz

安装步骤:

./configure –prefix=/usr/local &&

make

make install

Python-2.7.3的安装步骤:(注意,所有sed命令,不允许直接复制到终端,否则出现安装错误)

sed -i "s/ndbm_libs = \[\]/ndbm_libs = ['gdbm', 'gdbm_compat']/" setup.py &&

./configure –prefix=/usr/local \

            –enable-shared     \

            –with-system-expat \

            –with-system-ffi   \

            –enable-unicode=ucs4 &&

make

make install &&

chmod -v 755 /usr/local/lib/libpython2.7.so.1.0

如果检测python –version的版本不是2.7.3,链接python2.7 -> python

# ln -sv /usr/local/bin/python2.7 /usr/bin/python

如果出现找不到 libpython2.7.so.1.0, 复制 libpython2.7.so.1.0 到 /usr/lib

# cp /usr/local/lib/libpython2.7.so.1.0 /usr/llib

即可。

4.1.6, xcb-proto-1.8 

http://xcb.freedesktop.org/dist/xcb-proto-1.8.tar.bz2

依赖关系: Python-2.7.3, (已经安装,)

安装步骤:

./configure $XORG_CONFIG

make install

4.1.7,libxcb-1.9 

http://xcb.freedesktop.org/dist/libxcb-1.9.tar.bz2

以来关系:(只有libxslt-1.1.28没有安装)

libXau-1.0.7, libXdmcp-1.1.1, libpthread-stubs-0.3, libxslt-1.1.28, and xcb-proto-1.8 

4.1.7.1,libxslt-1.1.28

http://xmlsoft.org/sources/libxslt-1.1.28.tar.gz

依赖关系: 需要:libxml2-2.9.0

libxml2-2.9.0

http://xmlsoft.org/sources/libxml2-2.9.0.tar.gz

安装步骤:

./configure –prefix=/usr/local –disable-static &&

make

make install

libxslt-1.1.28

安装步骤:

./configure –prefix=/usr/local –disable-static &&

make

make install

4.1.7.1,libxslt-1.1.28

安装步骤:

./configure $XORG_CONFIG –enable-xinput –docdir='${datadir}'/doc/libxcb-1.9 &&

make

make install

4.1.8,Xorg Libraries 

依赖关系: (没有安装Fontconfig-2.10.2 )

Fontconfig-2.10.2, Xorg Protocol Headers, libXdmcp-1.1.1, and libxcb-1.9  

4.1.8.1,Fontconfig-2.10.2 

http://fontconfig.org/release/fontconfig-2.10.2.tar.bz2

依赖关系:(没有安装 FreeType-2.4.11)

 FreeType-2.4.11 and either expat-2.1.0 or libxml2-2.9.0  

 FreeType-2.4.11

 http://downloads.sourceforge.net/freetype/freetype-2.4.11.tar.bz2

安装步骤: (注意,所有sed命令的操作不可以复制,否则会出现错误)

sed -i -r 's:.*(#.*SUBPIXEL.*) .*:\1:' \

          include/freetype/config/ftoption.h &&

./configure –prefix=/usr –disable-static &&

make

make install

4.1.8.1,Fontconfig-2.10.2 

安装步骤:

./configure –prefix=/usr/local \

            –sysconfdir=/etc \

            –localstatedir=/var \

            –docdir=/usr/share/doc/fontconfig-2.10.2 \

            –disable-docs \

            –disable-static &&

make

make install

4.1.8,Xorg Libraries 

安装步骤: (和Xorg Protocol Headers 的安装步骤一样,不再详细解释,)

4,1,8,1,

cat > lib-7.7.md5 << "EOF"

84c66908cf003ad8c272b0eecbdbaee3  xtrans-1.2.7.tar.bz2

78b4b3bab4acbdf0abcfca30a8c70cc6  libX11-1.5.0.tar.bz2

71251a22bc47068d60a95f50ed2ec3cf  libXext-1.3.1.tar.bz2

645f83160cf7b562734e2038045106d1  libFS-1.0.4.tar.bz2

471b5ca9f5562ac0d6eac7a0bf650738  libICE-1.0.8.tar.bz2

766de9d1e1ecf8bf74cebe2111d8e2bd  libSM-1.2.1.tar.bz2

7a773b16165e39e938650bcc9027c1d5  libXScrnSaver-1.2.2.tar.bz2

a6f137ae100e74ebe3b71eb4a38c40b3  libXt-1.1.3.tar.bz2

a4efff8de85bd45dd3da124285d10c00  libXmu-1.1.1.tar.bz2

7ae7eff7a14d411e84a67bd166bcec1a  libXpm-3.5.10.tar.bz2

f39942f2cab379fc9b4c3731bf191b84  libXaw-1.0.11.tar.bz2

678071bd7f9f7467e2fc712d81022318  libXfixes-5.0.tar.bz2

a60e0b5c276d0aa9e2d3b982c98f61c8  libXcomposite-0.4.3.tar.bz2

ee62f4c7f0f16ced4da63308963ccad2  libXrender-0.9.7.tar.bz2

52efa81b7f26c8eda13510a2fba98eea  libXcursor-1.1.13.tar.bz2

44774e1a065158b52f1a0da5100cebec  libXdamage-1.1.3.tar.bz2

a2a861f142c3b4367f14fc14239fc1f7  libfontenc-1.1.1.tar.bz2

6851da5dae0a6cf5f7c9b9e2b05dd3b4  libXfont-1.4.5.tar.bz2

78d64dece560c9e8699199f3faa521c0  libXft-2.3.1.tar.bz2

2a689ae1089786a6712ce9e2c2c7c7ca  libXi-1.6.2.tar.bz2

cb45d6672c93a608f003b6404f1dd462  libXinerama-1.1.2.tar.bz2

0c843636124cc1494e3d87df16957672  libXrandr-1.4.0.tar.bz2

80d0c6d8522fa7a645e4f522e9a9cd20  libXres-1.0.6.tar.bz2

e8abc5c00c666f551cf26aa53819d592  libXtst-1.2.1.tar.bz2

5e1ac203ccd3ce3e89755ed1fbe75b0b  libXv-1.0.7.tar.bz2

3340c99ff556ea2457b4be47f5cb96fa  libXvMC-1.0.7.tar.bz2

b7f38465c46e7145782d37dbb9da8c09  libXxf86dga-1.1.3.tar.bz2

ffd93bcedd8b2b5aeabf184e7b91f326  libXxf86vm-1.1.2.tar.bz2

782ced3a9e754dfeb53a8a006a75eb1a  libdmx-1.1.2.tar.bz2

399a419ac6a54f0fc07c69c9bdf452dc  libpciaccess-0.13.1.tar.bz2

19e6533ae64abba0773816a23f2b9507  libxkbfile-1.0.8.tar.bz2

EOF

4,1,8,2

mkdir lib &&

cd lib &&

grep -v '^#' ../lib-7.7.md5 | awk '{print $2}' | wget -i- -c \

    -B http://xorg.freedesktop.org/releases/individual/lib/ &&

md5sum -c ../lib-7.7.md5

4,1,8,3

as_root()

{

  if   [ $EUID = 0 ];        then $*

  elif [ -x /usr/bin/sudo ]; then sudo $*

  else                            su -c \\"$*\\"

  fi 

}

export -f as_root

bash -e

4,1,8,4,

for package in $(grep -v '^#' ../lib-7.7.md5 | awk '{print $2}')

do

  packagedir=${package%.tar.bz2}

  tar -xf $package

  pushd $packagedir

  case $packagedir in

    libXfont-[0-9]* )

      ./configure $XORG_CONFIG –disable-devel-docs

    ;;

    libXt-[0-9]* )

      ./configure $XORG_CONFIG \

                  –with-appdefaultdir=/etc/X11/app-defaults

    ;;

    * )

      ./configure $XORG_CONFIG

    ;;

  esac

  make

  as_root make install

  popd

  rm -r $packagedir

  as_root /sbin/ldconfig

done

如果安装是出现异常,重复操作命令即可。

到此,Xorg Libraries 源代码级别安装完成,参考 www.linuxfromscratch.org.