本发明涉及计算机软件技术领域,更具体地,涉及一种快速移植编译开源程序的技巧。
背景技术:
目前,Linux的发行版就是将Linux核心与应用软件做一个打包,较著名的有:RedHat、Debain、SuSE、Ubuntu等,用户可以通过各发行版linux内核的安装包管理工具(apt-get、yum)安装自己须要软件程序,简单便捷的从指定的服务器手动下载RPM包而且安装,可以手动处理依赖性关系,而且一次安装所有依赖的软件包。
Linux的非发行版本通常是只有Linux核心及少量常用的可执行程序,须要使用的额外软件程序则难以直接安装linux 移植配置编译,须要自己自动进行编译开源程序获取。现今的网路设备因为自主开发用户态程序,通常选择使用简约精巧的非发行版本内核,通过使用标准gcc或自定义交叉编译工具编译标准Linux内核源码的形式。
这么,带来的问题是在开发过程中须要一些开源程序或库文件时就须要使用标准gcc或自定义交叉编译工具编译所需的开源程序或库文件源码,有些开源代码版本较多或比较难下载到,而一些功能复杂的开源程序或库文件源码在编译时又可能依赖于好多其他开源程序或库文件,这么可能会由于要编译一个开源程序或库文件而须要编译其他好几个开源程序或库文件,且编译过程中的各类报错解决尤为让人头疼,费时吃力。
因为不同的开源程序的复杂程度不同,移植上去的困难程度也不同,但是大部分开源程序在设计时没有考虑移植问题。
在现有技术中,领到要移植开源程序的源码包然后,首先要联接开源程序的功能和实现方式,并剖析开源程序的依赖关系:(1)硬件相关;(2)它依赖哪些特定的函数库,例如glibc;(3)是否依赖特定的高层图形泛型,例如gtk;(4)依赖特定的软件,例如GUI程序依赖的Xserver。
另外,开源程序依赖好多其他函数库,例如gtk软件必需要有gtk库的支持,为了程序的编译和运行,必须首先将这种函数库移植过来。更困难的是须要更改源代码red hat linux 下载,如果源码里有好多硬件相关的代码linux 移植配置编译,例如汇编指令,不同体系结构的指令集不同。可能不仅仅是一条条指令对应这么简单,由于目标平台可能没有对应功能的指令而且在不同平台上软件运行到汇编代码处时各个寄存器的意义不相同。另一个方式是假如可以用C代码将汇编段的功能模拟下来,那就用c代码取代汇编代码。因而致使整个移植编译的过程异常复杂,费时费劲,而且极其依赖于操作人本身的技术能力,普及化不够。
技术实现要素:
本发明提供一种克服上述问题或则起码部份地解决上述问题的快速移植编译开源程序的技巧。
按照本发明的一个方面,提供一种快速移植编译开源程序的方式,所述方式包括:在发行版本Linux系统中编译或则安装开源程序;移植到非发行版本Linux内核系统上运行。
其中,所述方式进一步包括:
步骤1,在虚拟机上安装发行版本Linux系统的编译机,作为编译和移植开源程序的编译机;
步骤2,搜索开源程序的安装包进行安装,将安装好的可执行程序导入上传到执行网路设备中;
步骤3,运行所述可执行程序,将运行所需的库文件或则其他依赖文件上传到所述执行网路设备的对应目录;
步骤4,将导入的所有可执行程序及库文件放在Linux文件系统的对应目录下,打包编译进Linux内核镜像文件中,重新上传到执行网路设备。
其中红旗linux下载,所述方式进一步包括:
步骤5,在所述编译机中安装网路设备内核编译工具,编译开源码而且配置所需开源库或依赖程序,编译后将可执行程序上传到执行网路设备验证,编译到内核文件系统。
其中,所述步骤1进一步包括:
步骤11,搭建发行版本Linux系统的编译机;
步骤12,按照当前所使用的非发行版本Linux内核的构架类型、3264位及内核版本信息,选择相同或类似的发行版本Linux内核系统在虚拟机上进行安装,作为编译和移植开源程序的编译机。
其中,所述步骤2进一步包括:
步骤21,依据所需开源程序的名称在编译机中使用安装管理工具进行安装包搜索;
步骤22,按照搜索到的安装包信息选择所需版本进行安装操作;
步骤23,安装完成后在根目录下查找到安装程序所在位置,将该可执行程序导入并上传到须要运行该程序的网路设备中。
其中,所述步骤3进一步包括:
步骤31,运行上传到执行网路设备上的所述可执行程序;
步骤32,按照提示信息将运行时缺乏的库文件或其他依赖程序搜索导入,并上传到网路设备的对应目录,直至可执行程序运行成功。
其中,所述步骤32进一步包括:
按照所需库文件或则其他依赖程序的名称在编译机中使用安装管理工具进行搜索;
步骤22,按照搜索到的信息选择其他依赖程序的所需版本进行安装操作;
步骤23,安装完成后在根目录下查找到库文件或则其他依赖程序所在位置,将该库文件和其他依赖程序的可执行程序导入并上传到须要运行该程序的网路设备中。
其中,所述步骤5进一步包括:
步骤51,在所述编译机中安装编译网路设备内核所使用的标准gcc或自定义交叉编译工具,以使编译工具一致;
步骤52,在所述编译机上将下载的开源码上传并解压,源码编译过程中安装使用所提示缺乏的开源库或依赖程序;
步骤53,编译完成后将生成的可执行程序导入并上传到网路设备上验证,运行正常情况下将生成的可执行程序打包编译进内核文件系统。
本申请公开了一种快速移植编译开源程序的方式,通过在发行版本Linux系统中编译或安装开源程序,之后移植到非发行版本内核系统上,解决非发行版本内核难以直接安装开源程序的问题,防止了编译开源程序又依赖于好多其他程序或库文件情况下的麻烦,节约大量的时间和人力。
附图说明
图1为依据本发明施行例的一种快速移植编译开源程序的方式的总流程图;
图2为依据本发明施行例的一种快速移植编译开源程序的方式的流程图。
具体施行方法
下边结合附图和施行例,对本发明的具体施行方法作进一步详尽描述。以下施行例用于说明本发明,但不拿来限制本发明的范围。
本发明公开了一种快速移植编译开源程序的方式,如图1所示,图1为依据本发明施行例的一种快速移植编译开源程序的方式的总流程图,通过在发行版本Linux系统中编译或安装开源程序,之后移植到非发行版本内核系统上,解决非发行版本内核难以直接安装开源程序的问题,防止了编译开源程序又依赖于好多其他程序或库文件情况下的麻烦,节约大量的时间和人力。
总的来说,如图2所示,图2为依据本发明施行例的一种快速移植编译开源程序的方式的流程图。本申请提供的方式包括:步骤1,在虚拟机上安装发行版本Linux系统的编译机,作为编译和移植开源程序的编译机;步骤2,搜索开源程序的安装包进行安装,将安装好的可执行程序导入上传到执行网路设备中;步骤3,运行所述可执行程序,将运行所需的库文件或则其他依赖文件上传到所述执行网路设备的对应目录;步骤4,将导入的所有可执行程序及库文件放在Linux文件系统的对应目录下,打包编译进Linux内核镜像文件中,重新上传到执行网路设备。
具体地,该方式包括如下步骤。
S1,搭建发行版本Linux系统的编译机;按照当前所使用的非发行版本Linux内核的构架类型、3264位及内核版本信息选择相同或类似的发行版本Linux内核系统在虚拟机上进行安装,作为编译和移植开源程序的编译机;
S2,依据所需开源程序的名称在上述编译机中使用安装管理工具进行安装包搜索(如yumsearchflashrom),之后按照搜索到的安装包信息选择自己所需的版本进行安装操作(如yuminstallflashrom),安装完成后在根目录下通过find命令查找到安装程序所在位置(find/-nameflashrom),之后将该可执行程序导入并上传到须要运行该程序的网路设备中;
S3,运行上传到网路设备上的可执行程序,按照提示信息将运行时缺乏的库文件或其他依赖程序根据S2步骤搜索找到导入,并上传到网路设备的对应目录(通常可执行程序放/bin目录,库文件放/lib目录),直至可执行程序运行成功;
S4,将导入的所有可执行程序及库文件放在Linux文件系统的对应目录下,打包编译进Linux内核镜像文件中,重新上传到网路设备,保证移植的可执行程序及库文件重启不遗失。
S5,另外,对于有些开源程序根据上述步骤仍然未能运行成功的,则必须选择编译开源码的形式。此时须要在所述编译机中安装编译网路设备内核所使用的标准gcc或自定义交叉编译工具,保证编译工具一致;之后在所述编译机上将下载的开源码上传并解压,进行源码编译过程中提示缺乏的开源库或依赖程序,可直接通过安装管理工具直接搜索安装使用,降低编译的工作量。编译完成后将生成的可执行程序导入并上传到网路设备上验证,运行正常情况下将生成的可执行程序打包编译进内核文件系统。
最后,本申请的方式仅为较佳的施行方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何更改、等同替换、改进等,均应包含在本发明的保护范围之内。