【问题标题】:ld can't find crti.o when trying to build libgcc for arm-unknown-linux-gnuabild 在尝试为 arm-unknown-linux-gnuabi 构建 libgcc 时找不到 crti.o
【发布时间】:2021-12-29 13:01:35
【问题描述】:

我目前正在尝试构建一个交叉编译器工具链来为 aarch64 编译 linux 内核,并且在我尝试构建 libgcc 之前一切正常。

运行make all-target-libgcc 时,我收到错误/opt/cross/arm-unknown-linux-gnueabi/bin/ld: cannot find crti.o: no such file or directory。 “crtn.o”和“-lc”也是如此。 我在 /opt/cross/lib 目录中搜索了这些文件,但找不到它们,但我确实在 gcc 源目录(crti.S, ....)中发现了未组装的 .S 文件。

二进制文件也存在于 /usr/lib 中,但我认为这无关紧要,因为它们是 x86-64。

我现在想知道的是为什么 gcc 源目录(版本 10.1.x)中的 .S 文件没有被组装成二进制文件,以及我该如何改变它。

提前感谢您的帮助

PS:我在这里找到了关于 crti.o 丢失的堆栈溢出的类似帖子,但这没有帮助。

【问题讨论】:

  • 我尝试用/opt/cross/bin/arm-unknown-linux-gnueabi-as /.../aarch64/crti.S 组装它,但出现错误“错误:错误指令`type(_init)'”
  • 如何决定一个包,当“文件”已知时:使用apt-file search crti.o.....或使用在线搜索packages.ubuntu.com/…

标签: linux gcc cross-compiling arm64


【解决方案1】:

似乎我的研究相当糟糕,您实际上并不需要 glibc / libgcc 来交叉编译 linux 内核。 如果有人遇到类似问题,我发现这篇文章非常有帮助:https://gts3.org/2017/cross-kernel.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多