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 构建没有帮助。
我的问题:
- gcc.c 的这一部分是否可以安全(且轻松地)删除...即 report_times 函数以及与之相关的所有内容?或者
- 是否有命令行选项告诉 arm-linux-eabi-gcc 不要使用 report_times?或者
- 有没有办法为 gcc 和 binutils 禁用主机/目标的 libiberty 构建,这会修复错误吗?
与往常一样......我会在等待答案的同时继续研究。