【问题标题】:Linker error: /usr/bin/ld: cannot find -lc链接器错误:/usr/bin/ld: 找不到 -lc
【发布时间】:2018-02-06 21:31:10
【问题描述】:

我正在尝试编译this code 一段时间。具体来说,我正在尝试使用给定的 mac 编译 avx2 代码。但是,我总是收到以下错误。 我查了很多,但找不到解决方案。如果您能帮助我找到解决方案,我将非常高兴。

/usr/bin/ld: 找不到-lc

collect2: 错误:ld 返回 1 个退出状态

make: *** [test/test_kyber] 错误 1

gcc 版本

gcc (GCC) 4.8.5 20150623(红帽 4.8.5-11)

版权 (C) 2015 Free Software Foundation, Inc.

这是免费软件;查看复制条件的来源。没有 保修单;甚至不考虑适销性或特定用途的适用性。

Clang 版本:

clang 版本 3.4.2 (tags/RELEASE_34/dot2-final)

目标:x86_64-redhat-linux-gnu

线程模型:posix

运行 make 命令的输出。

/usr/bin/gcc -Wall -Wextra -O3 -fomit-frame-pointer -msse2avx -mavx2 -march=native -static -o test/test_kyber kyber.c poly.c polyvec.c fips202.o fips202x4。 c precomp.c ntt.c verify.c indcpa.c consts.c kex.c nttlevels0t4.s nttlevels5t7.s mul_coefficients.s polyvec_pointwise_acc.s poly_add.s poly_sub.s cbd.s poly_freeze.s crypto_stream_aes256ctr.c keccak4x/KeccakP- 1600-times4-SIMD256.o randombytes.c test/test_kyber.c

/usr/bin/ld: 找不到-lc

collect2: 错误:ld 返回 1 个退出状态

make: *** [test/test_kyber] 错误 1

【问题讨论】:

  • 嗯,这是一个失败。 scnr ...但说真的,cannot find -lc 听起来是您的工具链安装的一个严重问题...您甚至可以在那台机器上编译任何东西吗?
  • 通常,我使用 gcc。它一直有效。
  • 好吧,这很奇怪……你能给出足够的输出上下文来显示哪个 command 实际失败了吗?
  • 您的文字图片isn't very helpful。它无法大声朗读或复制到编辑器中,并且索引不是很好,这意味着有相同问题的其他用户不太可能在这里找到答案。请edit您的帖子直接合并相关文本(最好使用复制+粘贴以避免转录错误)。
  • 请勿发布链接。将实际文本作为编辑发布到您的问题。

标签: c linux gcc makefile clang


【解决方案1】:

非常感谢您的帮助和时间。我明白了这个问题。 makefile 添加了一个 -static 标志,但在我们的办公机器上,我们没有静态 libc.a。因此,错误“找不到 -lc”。我删除了静态标志,现在它工作正常。 我认为我们不需要静态 libc.a,但我必须更仔细地检查。

【讨论】:

  • 期待静态libc?那是相当严重的破坏。静态链接到libc 通常是个坏主意。由于libc 是系统的接口,因此任何系统更新都可能破坏静态链接到libc 的程序,例如,如果系统调用发生更改。
  • 确实如此。我不知道作者为什么要添加静态标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2021-05-07
  • 2016-03-17
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多