【问题标题】:Building libc (newlib) results in "cannot find -lc"构建 libc (newlib) 导致“找不到 -lc”
【发布时间】:2018-08-18 15:30:32
【问题描述】:

我为sh3eb-elf 目标构建了一个交叉编译器。现在我需要一个 libc 实现。但是,当我想构建newlib 时,configure 会失败。

运行配置:

../newlib-cygwin/configure --host=sh3eb-elf

失败了。快速浏览config.log

configure:4435: sh3eb-elf-gcc    conftest.c  >&5
[...]/sh3eb-elf/sh3eb-elf/lib/gcc/sh3eb-elf/8.1.0/../../../../sh3eb-elf/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
configure:4439: $? = 1

显然,链接器没有找到 libc,这是我首先要在这里构建的。我一头雾水……configure的参数错了吗?

【问题讨论】:

  • 我很确定我不需要--target=,对吗?
  • 我在 Arch Linux 中使用预打包工具键入的每个 configure 调用中成功完成了包含 --target=sh3eb-elf 的构建:binutils、引导 gcc、newlib 使用 --target 而不是 --host ,最后是完整的 gcc。没有测试执行是否有效,但它编译了一个简单的printf("%s\n", "Hello world!"); 程序。我觉得需要--target 而不是--host 确实很奇怪。出于好奇,我尝试在完整构建 GCC 之后使用--host,但它似乎除了创建我使用--prefix 指定的目录之外没有做任何事情。
  • 是的,同时我重置了我的设置并尝试了--target...瞧。确实很奇怪。

标签: c linker static-libraries autoconf


【解决方案1】:

我不知道为什么,但正如 Chrono Kitsune 指出的那样,使用 --target=sh3eb-elf 可以解决问题。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多