艰难的LinuxCNC(EMC2)源代码安装依赖01
分析了一个圆弧补偿程序ode,想多了解一下,在linuxCNC(emc2)系统仿真,看它的算法,没想到源代码安装有这么大的依赖库,因为LinuxCNC数据比较完善。该软件只有一半的代码是开放的,一半以上的代码是不开放的,因为该项目起源于美国国家标准和技术研究所,也可以理解。
现介绍一下linuxCNC软件:
LinuxCNC(增强版机械控制)是机床(车床和铣床)的计算机控制系统;
(传统上是计算机数值控制CNCcomputernumericalcontrol)。
LinuxCNC开源代码是自由软件,现行版本的认证协议是GPLandLGPL。
LinuxCNC包括:
多个图形用户界面包括触摸屏
G代码解释器,(RS-274机床编程语言)
实时前瞻性的运动规划系统
低层机械电子操作(如传感器和电机)
一个易于使用的电子测试板快速生成您设备的独特配置
配有梯形图的PLC编程软件
方便的deb格式安装和Live-CD(嵌入linuxCNC的ubuntu光盘)
它不支持CAD或者,G机械自动生产的代码生成公式。
它可以模拟到9轴,支持多个界面
在计算机上LinuxCNC控制可操作的真实伺服(模拟或PWM脉宽和闭环反馈系统
运动控制的特点包括:切割半径和长度补偿、路径偏差限制在允许误差范围内、切割螺纹、多轴运动同步、合理进给率、操作员进给极限和常规速度控制。
支持非笛卡尔运动系统是支持用户的运动模型,包括可支持的结构(机械结构)hexapods六角并联系统
(Steward平台和类似的感受)和旋转关节系统的运动支持,
比如PUMA或者SCARA(商业名称:工业机器人industrialrotob,学术名称:机械臂manipulator)
/*Steward是20世纪60年代德国工程师提出的第一个六自由度装配平台,应用于机械加工和连杆机床*/
LinuxCNC运行在Linux的实时扩展上,支持现行的2.4&2.6内核实时扩展应用RT-Linux或者RTAI补丁。
安装deb格式和刻录Live-CD这是一种相对较快的安装方法,但如果开发人员安装它,特别是一个新系统,那就更麻烦了,
我写了我的安装过程,希望能为开发人员节省安装时间,
系统:debiansqueeze,604stableversion,i586,version,裸体系统,只有gnome,没有autotools.
硬件:hpnx6120笔记本电脑,intelpentiumm.
1,首先安装gcc,autoconf,autogen,automake,make,libtool,m4,我安装这些软件的方法是synaptic
打开(左上角菜单),系统,系统管理》新立得软件包管理器,或在终端中进入超级用户,su,然后输synaptic
搜索上述软件,选择,安装光盘,选择并单击《应用》执行安装。
2,下载LinuxCNC在当前文件夹中,源代码直接输入以下指令linuxcnc-dev,将所有代码下载到文件夹中,
gitclonegit://git.linuxcnc.org/git/linuxcnc.gitlinuxcnc-dev
三、开始安装,进入linuxcnc-dev文件夹,
#cdlinuxcnc-dev
然后,检查安装命令,
#ls
其中一个之一README查看内容的文件,
#catREADME(or,nanoREADMEor,viREADME)
内容如下:
Fromthetopleveldirectory,switchtothesourcedirectory:
cdsrc
Inthesourcedirectory,buildLinuxCNC:
./configure--enable-run-in-place
[or,ifyoudonothavearealtimekernel:]
./configure--enable-run-in-place--enable-simulator
makeclean
make
sudomakesetuid
torunthesoftwaregobacktothetopleveldirectory,andissue:
.scripts/rip-environment
linuxcnc
根据提示,我们进入src文件夹,
#cdsrc
然后开始编译配置文件,输入命令
./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.依赖,依赖glib-2.0,而glib-2.0以来XorgLibraries,
4.1XorgLibraries,
详细的安装参考:Xorg-7.7(因为这个版本支持多个文件的自动下载和安装)
http://www.linuxfromscratch.org/blfs/view/svn/x/x7lib.html
XorgLibraries以下软件,
Fontconfig-2.10.2,XorgProtocolHeaders,libXdmcp-1.1.1,andlibxcb-1.9
我按这个顺序安装,
24.XWindowSystemEnvironment
*IntroductiontoXorg-7.7
*util-macros-1.17
*XorgProtocolHeaders
*makedepend-1.0.4
*libXau-1.0.7
*libXdmcp-1.1.1
*libpthread-stubs-0.3
*xcb-poto-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.