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

艰难的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 3,开始安装,进入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.1的依赖关系,依赖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-proto-1.8 *libxcb-1.9 *XorgLibraries 因为我的系统中有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 makeinstall 这里,我没有设置$XORG_CONfig$XOR_PREFIX,系统认的是/usr/local 4.1.2,XorgProtocolHeaders 依赖需要: util-macros-1.17 建议安装: Sudo-1.8.6p3andWget-1.14(因为两个程序系统自带,所以没有安装,如果安装,下载代码,安装) 安装好依赖关系以后,执行安装命令,因为是多个文件,这个安装和下载的方法很特殊,基于bash脚本,不过很经典, 4.1.2.1,命令: cat>proto-7.7.md5<<"EOF" 1a05fb01fa1d5198894c931cf925c025bigreqsproto-1.1.2.tar.bz2 98482f65ba1e74a08bf5b056a4031ef0compositeproto-0.4.2.tar.bz2 998e5904764b82642cc63d97b4ba9e95damageproto-1.2.1.tar.bz2 4ee175bbd44d05c34d43bb129be5098admxproto-2.3.1.tar.bz2 b2721d5d24c04d9980a0c6540cb5396adri2proto-2.8.tar.bz2 e7431ab84d37b2678af71e29355e101dfixesproto-5.0.tar.bz2 c5f4f1fb4ba7766eedbc9489e81f3be2fontsproto-2.1.2.tar.bz2 3847963c1b88fd04a030b932b0aece07glproto-1.4.16.tar.bz2 13c8aedaf98a92e282b7e456c0a5bed9inputproto-2.2.tar.bz2 677ea8523eec6caca86121ad2dca0b71kbproto-1.0.6.tar.bz2 ce4d0b05675968e4c83e003cc809660drandrproto-1.4.0.tar.bz2 1b4e5dede5ea51906f1530ca1e21d216recordproto-1.14.2.tar.bz2 a914ccc1de66ddeb4b611c6b0686e274renderproto-0.11.1.tar.bz2 cfdb57dae221b71b2703f8e2980eaaf4resourceproto-1.2.0.tar.bz2 edd8a73775e8ece1d69515dd17767bfbscrnsaverproto-1.2.2.tar.bz2 c3b348c6e2031b72b11ae63fc7f805c2videoproto-2.3.1.tar.bz2 5f4847c78e41b801982c8a5e06365b24xcmiscproto-1.2.2.tar.bz2 eaac343af094e6b608cf15cfba0f77c5xextproto-7.2.1.tar.bz2 120e226ede5a4687b25dd357cc9b8efexf86bigfontproto-1.2.0.tar.bz2 a036dc2fcbf052ec10621fd48b68dbb1xf86dgaproto-2.1.tar.bz2 1d716d0dac3b664e5ee20c69d34bc10exf86driproto-2.1.1.tar.bz2 e793ecefeaecfeabd1aed6a01095174exf86vidmodeproto-2.3.1.tar.bz2 9959fe0bfb22a0e7260433b8d199590axineramaproto-1.2.1.tar.bz2 d4d241a4849167e4e694fe73371c328cxproto-7.0.23.tar.bz2 EOF 这个命令的意思是新建一个文件proto-7.7.md5,内容就是这些md5代码和软件包对应的名字,EOF是终端结束cat的命令,文件中没有。 4.1.2.2,命令: mkdirproto&& cdproto&& grep-v'^#'../proto-7.7.md5|awk'{print$2}'|wget-i--c\ -Bhttp://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];thensudo$* elsesu-c\\"$*\\" fi } export-fas_root 因为安装中的命令有一个环境应用,as_root,此命令是定义as_root,并且要求以超级用户的身份来安装程序。 bash-e 进入子终端,(我这里没有什么反义,不过还是找此步骤操作) 4.1.2.4,命令: forpackagein$(grep-v'^#'../proto-7.7.md5|awk'{print$2}') do packagedir=${package%.tar.bz2} tar-xf$package pushd$packagedir ./configure$XORG_CONfig as_rootmakeinstall popd rm-r$packagedir done 循环软件包,捕捉上层文件夹中proto-7.7.md5文件中的文件名,逐个解压所有的tar.bz2的文件,然后逐个进入, 执行安装命令./configure$XORG_CONfig 超级用户makeinstall 安装完成后删除目录 到此,XorgProtocolHeaders已经完成安装了,安装的路径是/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 或者 #exportLD_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/includeLIBS=/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,因为XorgProtocolHeaders有一个文件是安装到了../../share中的。 注意:如果安装过程中出现异样,重新执行命令即可。 4.1.3,makedepend-1.0.4 http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.4.tar.bz2 依赖XorgProtocolHeaders,(我们刚刚完成了安装和配置) 安装步骤: ./configure$XORG_CONfig&& make makeinstall 4.1.4,libXau-1.0.7 http://xorg.freedesktop.org/releases/individual/lib/libXau-1.0.7.tar.bz2 依赖XorgProtocalHeaders 安装步骤: ./configure$XORG_CONfig&& make makeinstall 4.1.4,libXdmcp-1.1.1 http://xorg.freedesktop.org/releases/individual/lib/libXdmcp-1.1.1.tar.bz2 依赖XorgProtocalHeaders 安装步骤: ./configure$XORG_CONfig&& make makeinstall 4.1.5,libpthread-stubs-0.3 http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.bz2 安装步骤: ./configure--prefix=/usr/local&& make makeinstall 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.0andlibffi-3.0.11 expat-2.1.0 http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz 安装步骤: ./configure--prefix=/usr/local&& make makeinstall libffi-3.0.11 ftp://sourceware.org/pub/libffi/libffi-3.0.11.tar.gz 安装步骤: ./configure--prefix=/usr/local&& make makeinstall 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 makeinstall&& chmod-v755/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 makeinstall 4.1.7,libxcb-1.9 http://xcb.freedesktop.org/dist/libxcb-1.9.tar.bz2 以来关系:(只有libxslt-1.1.28没有安装) libXau-1.0.7,libpthread-stubs-0.3,libxslt-1.1.28,andxcb-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 makeinstall libxslt-1.1.28 安装步骤: ./configure--prefix=/usr/local--disable-static&& make makeinstall 4.1.7.1,libxslt-1.1.28 安装步骤: ./configure$XORG_CONfig--enable-xinput--docdir='${datadir}'/doc/libxcb-1.9&& make makeinstall 4.1.8,XorgLibraries 依赖关系:(没有安装Fontconfig-2.10.2) Fontconfig-2.10.2,andlibxcb-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.11andeitherexpat-2.1.0orlibxml2-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 makeinstall 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 makeinstall 4.1.8,XorgLibraries 安装步骤:(和XorgProtocolHeaders的安装步骤一样,不再详细解释,) 4,1,8,1, cat>lib-7.7.md5<<"EOF" 84c66908cf003ad8c272b0eecbdbaee3xtrans-1.2.7.tar.bz2 78b4b3bab4acbdf0abcfca30a8c70cc6libX11-1.5.0.tar.bz2 71251a22bc47068d60a95f50ed2ec3cflibXext-1.3.1.tar.bz2 645f83160cf7b562734e2038045106d1libFS-1.0.4.tar.bz2 471b5ca9f5562ac0d6eac7a0bf650738libICE-1.0.8.tar.bz2 766de9d1e1ecf8bf74cebe2111d8e2bdlibSM-1.2.1.tar.bz2 7a773b16165e39e938650bcc9027c1d5libXScrnSaver-1.2.2.tar.bz2 a6f137ae100e74ebe3b71eb4a38c40b3libXt-1.1.3.tar.bz2 a4efff8de85bd45dd3da124285d10c00libXmu-1.1.1.tar.bz2 7ae7eff7a14d411e84a67bd166bcec1alibXpm-3.5.10.tar.bz2 f39942f2cab379fc9b4c3731bf191b84libXaw-1.0.11.tar.bz2 678071bd7f9f7467e2fc712d81022318libXfixes-5.0.tar.bz2 a60e0b5c276d0aa9e2d3b982c98f61c8libXcomposite-0.4.3.tar.bz2 ee62f4c7f0f16ced4da63308963ccad2libXrender-0.9.7.tar.bz2 52efa81b7f26c8eda13510a2fba98eealibXcursor-1.1.13.tar.bz2 44774e1a065158b52f1a0da5100cebeclibXdamage-1.1.3.tar.bz2 a2a861f142c3b4367f14fc14239fc1f7libfontenc-1.1.1.tar.bz2 6851da5dae0a6cf5f7c9b9e2b05dd3b4libXfont-1.4.5.tar.bz2 78d64dece560c9e8699199f3faa521c0libXft-2.3.1.tar.bz2 2a689ae1089786a6712ce9e2c2c7c7calibXi-1.6.2.tar.bz2 cb45d6672c93a608f003b6404f1dd462libXinerama-1.1.2.tar.bz2 0c843636124cc1494e3d87df16957672libXrandr-1.4.0.tar.bz2 80d0c6d8522fa7a645e4f522e9a9cd20libXres-1.0.6.tar.bz2 e8abc5c00c666f551cf26aa53819d592libXtst-1.2.1.tar.bz2 5e1ac203ccd3ce3e89755ed1fbe75b0blibXv-1.0.7.tar.bz2 3340c99ff556ea2457b4be47f5cb96falibXvMC-1.0.7.tar.bz2 b7f38465c46e7145782d37dbb9da8c09libXxf86dga-1.1.3.tar.bz2 ffd93bcedd8b2b5aeabf184e7b91f326libXxf86vm-1.1.2.tar.bz2 782ced3a9e754dfeb53a8a006a75eb1alibdmx-1.1.2.tar.bz2 399a419ac6a54f0fc07c69c9bdf452dclibpciaccess-0.13.1.tar.bz2 19e6533ae64abba0773816a23f2b9507libxkbfile-1.0.8.tar.bz2 EOF 4,1,8,2 mkdirlib&& cdlib&& grep-v'^#'../lib-7.7.md5|awk'{print$2}'|wget-i--c\ -Bhttp://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];thensudo$* elsesu-c\\"$*\\" fi } export-fas_root bash-e 4,1,8,4,forpackagein$(grep-v'^#'../lib-7.7.md5|awk'{print$2}') do packagedir=${package%.tar.bz2} tar-xf$package pushd$packagedir case$packagedirin 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_rootmakeinstall popd rm-r$packagedir as_root/sbin/ldconfig done 如果安装是出现异常,重复操作命令即可。 到此,XorgLibraries源代码级别安装完成,参考www.linuxfromscratch.org.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...