虽然可以从Abe的源代码树运行它,但不推荐这样做。最佳实践是创建一个新的构建目录,并在该目录中配置Abe。这使得更改分支甚至删除子目录变得很容易。所有路径都有def默认值,即在运行配置的相同目录下创建它们。
Abe需要几个目录。这些是:
$ABE-PATH/configure
--with-local-snapshots=$ABE_PATH/snapshots
--with-local-builds=$ABE-PATH/destdir
--with-remote-snapshots=[email protected]:/home/abe/var/snapshots/
这将更改3个主要路径,包括将远程主机更改为使用rsync或ssh来下载tarball,而不是HTTP。您可以执行./configure——help来获取配置时间参数的完整列表。
configure进程生成一个带有默认设置的host.conf文件。abe在运行时读取这个文件,因此可以更改这些值并重新运行abe.sh来使用新的值。每个工具链组件也有一个配置文件。默认版本会在构建时复制到构建树中。也可以编辑这个文件(通常称为gcc.conf之类的文件)来更改配置组件时使用的工具链组件特定值。
通过查看配置时生成的config.log文件的顶部,您可以看到用于配置每个组件的值。例如:
head ${hostname}/${target}/${component}/config.log
可以指定一个完整的tarball名称,减去压缩部分,这将是动态找到的。如果提供的名称中出现了单词“tar”,则只在远程目录中查找它。如果该ame是bzr、sv、http或git的URL,则将使用适当的源代码控制系统从远程存储库签出源代码。
$ABE-PATH/configure
--with-local-snapshots=$ABE_PATH/snapshots
--with-local-builds=$ABE-PATH/destdir
--with-remote-snapshots=[email protected]:/home/abe/var/snapshots/
这将更改3个主要路径,包括将远程主机更改为使用rsync或ssh来下载tarball,而不是HTTP。您可以执行./configure——help来获取配置时间参数的完整列表
也可以指定一个“别名”,例如…“gcc - 4.8”。在这种情况下,首先检查远端快照目录。如果名称不是唯一的,但找到了匹配项,并生成错误。如果根本没有找到该名称,那么将从sources.conf文件中提取源存储库的URL,并检出代码。
有几种方法可以列出可用的文件。有两个可以下载的文件的主远程目录。这些都是“快照”或“基础设施”。基础架构通常只在每个主机上安装一次,并且包含构建GCC所需的其他包,比如gmp。快照是所有源tarball的主要位置。要列出所有可用的快照,可以执行
"abe.sh --list snapshots"。
要构建特定组件,请使用——build选项来abe。target选项也用于交叉构建。例如:
"abe.sh --target arm-linux-gnueabihf gcc-linaro-4.8.2013.07-1"
这将获取此发行版的源代码tarball,构建需要编译的任何东西,例如binutils,然后构建这些源代码。也可以指定到源存储库的URL。例如:
"abe.sh --target arm-linux-gnueabihf git://git.linaro.org/toolchain/eglibc.git"
要构建一个完整的交叉工具链,最简单的方法是让abe控制所有步骤。虽然也可以单独执行每一步。要构建完整的工具链,可以这样做:
"abe.sh --target arm-linux-gnueabihf --build all"
Older NOTES
x86_64-linux-gnu
arm-linux-gnueabi
arm-linux-gnueabihf
armeb-linux-gnueabihf
aarch64-linux-gnu
aarch64-none-elf
aarch64_be-none-elf
aarch64_be-linux-gnu
工具链组件
* gcc (gcc, g++, objc, fortran)
* gas
* ld (gold)
* libc (newlib,eglibc,glibc)
* dependant libs (gmp, mpc, mpfr)
使用现成的Ubuntu工具链构建
* Linaro GCC Maintenance (currently Linaro GCC 4.7)
* FSF GCC Previous (currently FSF GCC 4.7)
* FSF GCC Current (currently FSF GCC 4.8)
构建trunk/master
* Linaro GCC Development (currently Linaro GCC 4.8)
* FSF GCC Trunk (currently FSF GCC 4.9)
变量
*构建所有组件的主机工具链版本(gcc、gas、ld、libc)
*配置选项
特征:
*使用下载的二进制文件构建或在本地构建它们
*具有所有组件的默认配置
*所有记录到SQL数据库的信息
*能够混合和匹配所有工具链组件
*本地或远程测试
*为LAVA排队工作
*列出可能的版本和组件构建
Abe命令行参数:
使用shell脚本作为配置文件ala *.conf,设置全局变量或自定义函数。避免冲突的良好命名约定很重要。它应该能够从远程主机下载。
它应该使用bourne shell脚本来实现更多的功能,而不是Makefiles。Android和Chromium都使用这种技术。
每个需要构建的项目都应该有一个列出主要构建时依赖项的文件。所有目标都应该有默认值,但是值可以用本地配置文件覆盖。配置数据也可能存在于数据库中。每个构建和测试运行的配置数据都被记录到数据库中。
交叉编译G++非常复杂,编译器有一个第一阶段的编译,它只用于编译C库。然后编译C库。之后就可以构建G++了。
主要目标是获得适当的数据,以支持以各种方式绘制图表,以帮助更好地理解每个工具链组件的质量。这将帮助开发人员确定他们的更改是提高了还是降低了组件的质量。这也将允许其他人获得每个组件质量的概述,这将支持产品发布和管理计划。
*在所有支持的平台上绘制组件特定版本的测试运行
*在所有支持的平台上绘制组件的测试用例
*在版本列表中绘制组件的测试用例
*在所有支持的平台上绘制组件的通过百分比
*在所有支持的平台和多个版本中绘制组件的通过百分比。
*在所有支持的平台上绘制组件的失败百分比
*在所有支持的平台和多个版本中绘制组件的失败百分比。
*以总测试结果的百分比绘制所有测试状态
*绘制每个测试的实际总计的所有测试状态
CoreMark
* Compiler and version
* Operating Speed in Mhz
* CoreMark/Mhz
* CoreMark
* CoreMark/Core
* Parallel Execution
* EEMBC
EEMBC
* TODO
Spec CPU 2000
* CINT
* Benchmark
* Reference Time
* Base Runtime
* Base Ratio
* Runtime
* Ratio
* CFP
* Benchmark
* Reference Time
* Base Runtime
* Base Ratio
* Runtime
* Ratio
Spec CPU 2006
* Benchmark
* Base Seconds
* Base Ratio
* Peak Seconds
* Peak Ratio
为了增加对缺失目标的支持,我们必须告诉ABE关于目标的一些特殊的事情:
-选择哪个libc:在abe.sh中查找"powerpc"并添加类似的处理代码
-选择构建语言:在config/gcc.conf中,再次查找“powerpc”作为示例
-安装Linux内核头文件时,将目标名称转换为Linux名称:在lib/make.sh中,再次查找powerpc