1

TLDR: 在 gcc 的跨本机构建中出现致命错误“无法获得处理时间”。我可以从 gcc.c 中删除 report_times 代码还是使用 gcc 命令行选项禁用 report_times 或者在没有 libiberty 的情况下构建 gcc(其中包含 report_times 使用的 pex_get_times

细节 在解决了各种问题后,我(最终)成功地使用了 Android NDK 独立工具链来构建 binutils 2.23 和 gcc 4.70。

我目前的问题是让它在我的设备上运行。

我写了一个标准的“hello world”(从这里复制)来在我的设备上测试 gcc。当我运行时:

arm-linux-eabi-gcc hello.c -o hello 或:arm-linux-eabi-gcc hello.c

我收到以下错误:

arm-linux-eabi-gcc:致命错误:无法获取进程时间:没有这样的文件或目录。

除了 gcc.c 源的链接外,谷歌没有返回太多。检查源代码,我在一个名为 report_times 的函数(模块?扩展?)中发现了错误。函数(模块?扩展?)pex_get_times....我猜它会返回错误,如果它无法获得处理时间。

pex_get_times 函数(模块?扩展?我不确定它是什么)在 libiberty 中定义。我可以使用 --disable-build-libiberty,但它对主机(我的 NookHD)gcc 构建没有帮助。

我的问题:

  1. gcc.c 的这一部分是否可以安全(且轻松地)删除...即 report_times 函数以及与之相关的所有内容?或者
  2. 是否有命令行选项告诉 arm-linux-eabi-gcc 不要使用 report_times?或者
  3. 有没有办法为 gcc 和 binutils 禁用主机/目标的 libiberty 构建,这会修复错误吗?

与往常一样......我会在等待答案的同时继续研究。

4

1 回答 1

0

在发布这个问题后大约一个小时发现了这个。也许两个。

显然 report_times 是 GCC 调试符号 (?) 的一部分。要排除 report_times (这会导致原始问题中的“获取处理时间失败”),您必须构建非调试...或发布...版本的 gcc。

为此,我使用了此链接中的信息:http ://www-gpsg.mit.edu/~simon/gcc_g77_install/build.html

但是,我从 LIBCXXFLAGS 和 LIBCFLAGS 中省略了 -g 并且我添加了没有 -g 的 LIBCPPFLAGS 以防万一。Ran make DESTDIR=/staging/install/path install-host,打包并传输到设备。不再出现“无法获得处理时间”错误。

我看到另一个错误,但它与这个问题无关

于 2013-10-13T20:55:37.657 回答