在各种机器上优化C库的构建/编译任务的最佳方法

时间:2013-02-01 20:49:12

标签: c build compilation build-process build-automation

我们需要在各种环境下构建一个C库,例如(suse x86,suse itanium,solaris,HPUX,IBM AIX),它们具有不同的编译器选项(如编译器标志,32位或64位,静态或动态, endianess等)。目前我们正在大约200台构建机器上构建它。我们有一个高效的makefile,但我们仍然需要登录到各种机器并执行FTP来获取代码,然后执行make然后再次传输库。然后我们需要将所有200个平台库保留在一个发布机器中。

我们的目的是减少手动登录到不同机器以触发构建的工作量,最佳方法是什么?

通过在一台Linux机器上编写expect脚本来自动执行此操作的一种方法,该机器将登录所有200台机器,触发构建并收回库并将其保留在原位。

与为200个构建编写期望脚本相比,还有其他方法可以减少工作量吗?例如,我们需要构建大约50个Vxworks平台,因为我们只在一台可以完成所有50个平台的Windows机器中使用龙卷风包(交叉编译器)。为此,我们编写了一个单击自动化脚本(小脚本,不需要登录到50台机器)。

同样,如果所有* nix机器(suse,solaris,hpux,ibm aix等)编译器都可以使用交叉编译器,我们可以在一台机器(linux或windows)上安装所有这些。然后我们可以编写一个脚本来在一台机器上自动化所有200个构建,而无需编写用于远程登录或ftp的脚本。

或者还有其他简单方法可以处理多个* nix平台中的构建吗?

2 个答案:

答案 0 :(得分:4)

Jenkins会对你有用吗? 它越来越受Java项目(C / C ++ / C#)的欢迎。根据我的理解,詹金斯很合适。

答案 1 :(得分:1)

看看GNU AutoTools。每个人都知道如何使用他们的输出(典型的./configure; make; make install舞蹈),对目标没有奇怪的要求,有广泛的机制来处理操作系统的变幻莫测。不过,它的学习曲线非常陡峭。