如何交叉编译 elfutils

如何交叉编译 elfutils

我的系统(uname --all)

Linux shyamdaramubtnb 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

我的目标

ARM Cortex A7

我正在perf为 ARM 交叉编译工具,但是perf虽然编译需要elfutils包稍后读取 VMLinux 文件,但有人可以建议我一种交叉编译 elfutils 的方法吗

从下载的包这里

目前我正在遵循以下程序:

$ aclocal
$ autoheader
$ autoconf
$ automake --add-missing
$ ./configure --host=arm-none-linux-gnueabi \
--prefix=/home/kwangwoo/tools/arm-2010q1/arm-none-linux-gnueabi/libc/usr/
$ make
$ make install

但我坚持执行 ./configure 的过程,这引发了我的错误

./configure: line 5115: syntax error near unexpected token `zlib,ZLIB,z,gzdirect,gzip'
./configure: line 5115: `eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)'

可能是什么原因?奇怪的是,我在下载的文件夹中没有找到 Makefile,configure 是否应该创建一个 make 文件?(我看到类似Makefile.in,的文件Makefile.am)。

最新进展 1:我开始关注关联对于我的问题来说,它几乎没有什么技巧,并且尝试做与我正在尝试的事情相同的事情

之前我遇到了一些我忽略的警告,我知道它们是问题的真正原因,在运行时aclocal我收到一个错误说

warning: macro AM_PO_SUBDIRS not found in library.

intltool通过安装和解决gettext

运行后automake --add-missing我收到一条警告说

libdwfl/Makefile.am:73: ZLIB does not appear in AM_CONDITIONAL
libdwfl/Makefile.am:76: BZLIB does not appear in AM_CONDITIONAL
libdwfl/Makefile.am:79: LZMA does not appear in AM_CONDITIONAL
tests/Makefile.am:59: BIARCH does not appear in AM_CONDITIONAL
tests/Makefile.am:122: BIARCH does not appear in AM_CONDITIONAL
tests/Makefile.am:135: LZMA does not appear in AM_CONDITIONAL
tests/Makefile.am:139: ZLIB does not appear in AM_CONDITIONAL

正如我尝试过的链接所建议的autoreconf -f -i,然后 automake --add-missing再次尝试,效果就像魅力一样

然后我运行了上面的 ./configure 实际上没有停止任何地方,前提是我也做了一些思考,比如注释 Makefile 和 backends/Makefile 的部分,其中涉及一些与 i386 和 x86_64 相关的脚本,这解决了我的构建问题ARM 的 elfutils !

谁能解释一下上述步骤中到底发生了什么?

答案1

autotools 套件是一个脚本和工具框架,用于在任何类型的系统上(理论上)虚拟地自动设置和编译软件包。

这是相当复杂的。

通常,第一阶段是配置构建系统,以检查系统上是否存在编译软件所需的所有内容,并且了解它的位置(以及存在的版本)。

然后,构建系统(基于 Makefile)已配置完毕并准备就绪。

您似乎停止在配置阶段,因为配置脚本内部出现了一些错误。

请注意,您在脚本之前运行的命令configure通常是供开发人员使用的,因为交叉编译可能需要它们。

最后,错误消息似乎停在了zip库的检测处(脚本可以在列表显示之间进行选择,因为zip是一种标准算法,它可以只选择其中一个lib,但它似乎并不高兴与它找到的脚本)。

我无法透露更多信息,因为您没有详细说明您的发行版和您工作的环境。

相关内容