binutils可以在没有libiberty的情况下建造吗?或者可以报告report_times吗?

时间:2013-10-13 11:15:51

标签: gcc compiler-construction compiler-errors android-ndk cross-compiling

TLDR:在跨本机构建的gcc上获取致命错误'无法获得处理时间'。我可以从gcc.c中删除report_times代码吗?或者使用gcc命令行选项来禁用report_times或构建没有libiberty的gcc(其中包含report_times使用的pex_get_times

DETAIL 在我遇到各种问题之后,我(最终)成功地使用了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返回错误....我猜它是这样做的,如果它无法获得处理时间。

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

我的问题:

  1. gcc.c的这部分可以安全(并且容易)移除......即。 report_times函数以及与之相关的所有内容? 或
  2. 是否有命令行选项告诉arm-linux-eabi-gcc不要使用report_times? 或
  3. 有没有办法为gcc和binutils禁用主机/目标的libiberty构建,那会修复错误吗?
  4. 一如既往......我会在等待答案的同时继续研究。

1 个答案:

答案 0 :(得分:0)

发布此问题约一小时后发现。也许两个。

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

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

但是,我从LIBCXXFLAGS和LIBCFLAGS中省略了-g,我添加了LIBCPPFLAGS而没有-g以防万一。 Ran make DESTDIR = / staging / install / path install-host,tarballed并转移到设备。不再“未能获得处理时间”错误。

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