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 你好 或者: arm-linux-eabi-gcc 你好.c
我收到以下错误:
arm-linux-eabi-gcc:致命错误:无法获取进程时间:没有这样的文件或目录。
除了 gcc.c 源代码的链接之外,Google 没有返回太多信息。 检查源代码,我发现一个名为report_times的函数(模块?扩展?)中存在错误。 该错误是由函数(模块?扩展?) pex_get_times 返回的。我猜如果它无法获取进程时间,它就会这样做。
pex_get_times 函数(模块?扩展?我不确定它是什么)是在 libiberty 中定义的。 我可以使用 --disable-build-libiberty,但它对主机(我的 NookHD)gcc 构建没有帮助。
我的问题:
一如既往......我会在等待答案的同时继续研究。
在发布这个问题大约一个小时后发现这个。 也许两个。
显然report_times是GCC调试符号(?)的一部分。 要排除report_times(这会导致原始问题中的“无法获取处理时间”),您必须构建gcc的非调试...或发布...版本。
为此,我使用了以下链接中的信息:http://www-gpsg.mit.edu/~simon/gcc_g77_install/build.html
但是,我从 LIBCXXFLAGS 和 LIBCFLAGS 中省略了 -g,并添加了不带 -g 的 LIBCPPFLAGS,以防万一。 运行 make DESTDIR=/staging/install/path install-host,压缩并传输到设备。 不再出现“无法获取处理时间”错误。
我看到另一个错误,但它与这个问题无关