软件源码编译方法及装置与流程

文档序号:12363058阅读:125来源:国知局
软件源码编译方法及装置与流程

本发明涉及软件编译技术领域,尤其涉及一种软件源码编译方法及装置。



背景技术:

RPM(Red Hat Package Manager,红帽子包管理器)是用于Linux分发版的最常见的软件包管理器。RPM有五种基本的操作功能:安装、卸载、升级、查询和验证。这五种基本功能的实现仅仅需要用RPM+选项+RPM包就能轻易地实现。如果要发布RPM格式的源码包或者是二进制包,就要使用RPM最新打包工具RPMbuild(创建RPM),RPMbuild是一种常用的软件源码编译方法。

在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:

采用RPMbuild进行软件源码编译,必须依赖本地环境,在编译过程中容易受到外界环境的干扰,不能有效保证软件源码包编译的正确性。



技术实现要素:

本发明提供的软件源码编译方法及装置,能够为软件构建独立的编译环境,从而可以减少外界环境的干扰,有效保证源码包编写的正确性。

第一方面,本发明提供一种软件源码编译方法,包括:

为软件创建一个最小编译系统;

以改变根目录chroot方式在所述最小编译系统中编译所述软件的源码包;

将编译后的源码包存储到指定位置。

第二方面,本发明提供一种软件源码编译装置,包括:

创建单元,用于为软件创建一个最小编译系统;

编译单元,用于以改变根目录chroot方式在所述最小编译系统中编译所述 软件的源码包;

存储单元,用于将编译后的源码包存储到指定位置。

本发明实施例提供的软件源码编译方法及装置,为软件创建一个最小编译系统,以chroot方式在所述最小编译系统中编译所述软件的源码包,将编译后的源码包存储到指定位置。与现有技术相比,本发明能够为软件构建独立的编译环境,以便最大限度地减少外界环境的干扰,从而有效保证源码包的编写的正确性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明软件源码编译方法实施例一的流程图;

图2为本发明软件源码编译方法实施例二的流程图;

图3为本发明软件源码编译装置实施例一的结构示意图;

图4为本发明软件源码编译装置实施例二的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种软件源码编译方法,图1为本发明软件源码编译方法实施例 一的流程图,如图1所示,本实施例的方法包括:

S11、为软件创建一个最小编译系统;

S12、以chroot(change root,改变根目录)方式在所述最小编译系统中编译所述软件的源码包;

采用chroot方式在所述最小编译系统中编译所述软件的源码包,从而生成新的源码包和工作目录。

S13、将编译后的源码包存储到指定位置。

其中,所述指定位置为系统预先设定好的位置。

本发明实施例提供的软件源码编译方法,为软件创建一个最小编译系统,以chroot方式在所述最小编译系统中编译所述软件的源码包,将编译后的源码包存储到指定位置。与现有技术相比,本发明能够为软件构建独立的编译环境,以便最大限度地减少外界环境的干扰,从而有效保证源码包的编写的正确性。

本发明实施例还提供一种软件源码编译方法,图2为本发明软件源码编译方法实施例二的流程图,以在fedora中进行软件源码编译为例,

如图2所示,本实施例的方法包括:

S21、为软件创建一个最小编译系统。

在fedora中,每个软件的发布版中都会提供最小编译系统的RPM包列表,根据软件发布版中提供的最小编译系统的RPM包列表,为软件创建一个最小编译系统。

其中,在为软件创建一个最小编译系统之前,需要执行如下操作:

首先,为编译环境配置参数;

编译环境的配置参数可以包括:编译时chroot后用户的主目录、是否使用系统DNS(Domain Name System,域名系统)、工作目录、编译超时、编译任务 目录、目标平台、编译环境搭建的命令、发布版后缀、是否使用root cache(根缓存)、root cache目录、ccache(compiler cache,编译器缓存)加快重新编译时的速度、ccache大小、ccache目录、是否使用yum cache(yum缓存);

RPM编译相关的配置参数可以包括:编译的主机平台、cpu架构、打包时的vendor(供应商)、编译的根目录、RPM包命名格式、打包者信息等。

然后,配置yum(Yellow dog Updater,Modified)源;

其中,yum是一个软件包管理器,是为了解决Linux系统中特有的依赖关系问题而存在的。yum源相当于一个目录项,当使用yum机制安装软件时,若需要安装依赖软件,则yum机制会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。yum从指定的地方,例如相关网站的RPM包地址或本地的RPM路径自动下载RPM包并且安装,能够很好的解决依赖关系问题。

yum的基本工作机制如下:

在服务器端,服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内;在客户端,如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件,通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

具体地,配置后续编译软件源码包时需要用到的各种参数和变量,后续需要安装的所有软件都从yum源中获取。

最后,运行run.sh脚本。

其中,run.sh脚本为一shell脚本,shell脚本可将多条命令编写到一个文件中,通过运行脚本文件即可完成指定的工作。常用于系统启动、程序编译等需要重复执行大量命令的场合。

S22、以chroot方式在所述最小编译系统中编译所述软件的源码包。

具体地,可以使用chroot工具进入到所述最小编译系统中,只安装要编译的源码包的依赖包,并进行编译。

其中,所述chroot方式即change root,具体为:改变应用程序执行时所参考的根目录位置,编译完成后运行的所有程序都是指定的根目录下的程序。

S23、将编译后的源码包存储到指定位置。

S24、记录所述软件的源码包的编译过程。

本发明实施例提供的软件源码编译方法,为软件创建一个最小编译系统,以chroot方式在所述最小编译系统中编译所述软件的源码包,将编译后的源码包存储到指定位置。与现有技术相比,本发明能够为软件构建独立的编译环境,以便最大限度地减少外界环境的干扰,从而有效保证源码包的编写的正确性;此外,使用灵活,能根据需要保留编译环境。

上述软件源码编译方法实施例可以基于MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)平台。

本发明实施例提供一种软件源码编译装置,图3为本发明软件源码编译装置实施例一的结构示意图,如图3所示,本实施例的装置包括:

创建单元31,用于为软件创建一个最小编译系统;

编译单元32,用于以chroot方式在所述最小编译系统中编译所述软件的源码包;

采用chroot方式在所述最小编译系统中编译所述软件的源码包,从而生成新的源码包和工作目录。

存储单元33,用于将编译后的源码包存储到指定位置。

其中,所述指定位置为系统预先设定好的位置。

本发明实施例提供的软件源码编译装置,为软件创建一个最小编译系统,以chroot方式在所述最小编译系统中编译所述软件的源码包,将编译后的源码包存储到指定位置。与现有技术相比,本发明能够为软件构建独立的编译环境,以便最大限度地减少外界环境的干扰,从而有效保证源码包的编写的正确性。

图4为本发明软件源码编译装置实施例二的结构示意图,如图4所示,本实施例的装置在图3所示装置结构的基础上,进一步地,所述软件源码编译装置还可以包括:

记录单元34,用于记录所述软件的源码包的编译过程。

可选地,在fedora中,所述创建单元31,用于根据软件发布版中提供的最小编译系统的RPM包列表,创建一个最小编译系统。

其中,在所述创建单元31创建最小编译系统之前,需要执行如下操作:

首先,为编译环境配置参数;

编译环境的配置参数可以包括:编译时chroot后用户的主目录、是否使用系统DNS、工作目录、编译超时、编译任务目录、目标平台、编译环境搭建的命令、发布版后缀、是否使用root cache、root cache目录、ccache加快重新编译时的速度、ccache大小、ccache目录、是否使用yum cache;

RPM编译相关的配置参数可以包括:编译的主机平台、cpu架构、打包时的vendor、编译的根目录、RPM包命名格式、打包者信息等。

然后,配置yum源;

其中,yum是一个软件包管理器,是为了解决Linux系统中特有的依赖关系问题而存在的。yum源相当于一个目录项,当使用yum机制安装软件时,若需要安装依赖软件,则yum机制会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。yum从指定的地方,例如相关网站的RPM包地址或本地 的RPM路径自动下载RPM包并且安装,能够很好的解决依赖关系问题。

yum的基本工作机制如下:

在服务器端,服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内;在客户端,如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件,通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

具体地,配置后续编译软件源码包时需要用到的各种参数和变量,后续需要安装的所有软件都从yum源中获取。

最后,运行run.sh脚本。

其中,run.sh脚本为一shell脚本,shell脚本可将多条命令编写到一个文件中,通过运行脚本文件即可完成指定的工作。常用于系统启动、程序编译等需要重复执行大量命令的场合。

可选地,所述编译单元32,用于使用chroot工具进入到所述最小编译系统中,只安装要编译的源码包的依赖包,并进行编译。

其中,所述chroot方式即change root,具体为:改变应用程序执行时所参考的根目录位置,编译完成后运行的所有程序都是指定的根目录下的程序。

本发明实施例提供的软件源码编译装置,为软件创建一个最小编译系统,以chroot方式在所述最小编译系统中编译所述软件的源码包,将编译后的源码包存储到指定位置。与现有技术相比,本发明能够为软件构建独立的编译环境,以便最大限度地减少外界环境的干扰,从而有效保证源码包的编写的正确性;此外,使用灵活,能根据需要保留编译环境。

上述软件源码编译装置实施例可以基于MIPS平台。

本发明实施例软件源码编译方法及装置,可以适用于在fedora中进行软件源码编译,但不仅限于此。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1