gpt4 book ai didi

clang - 如何阻止 Clang 复制标准 C 头文件中的函数?

转载 作者:行者123 更新时间:2023-12-04 07:09:05 26 4
gpt4 key购买 nike

我有一些非常可爱的 C99 代码,它们是从多个 .c 文件编译而来的,当我使用 Clang 2.7 进行编译时,出现了一些非常奇怪的错误:

/usr/include/bits/stdio.h:77: multiple definition of `putchar'
a2test.o:/usr/include/bits/stdio.h:77: first defined here

发生的事情是 <stdio.h> 的 GNU libc 头文件声明某些函数,包括 putchar , 为 extern __inline__ ,出于某种原因,clang 将定义放入 .o文件。然后当链接器看到重复的定义时,它会发出哔哔声。

我怀疑存在配置问题:当我使用 Debian lenny 附带的 clang 2.7 时,一切都会编译。但是对于我正在教授的类(class),软件必须在 Red Hat Enterprise Linux 5 上运行,并且我的系统管理员已经从源代码构建了 clang 2.7。 (我们没有使用 2.9,因为我们无法编译 hello world,我们没有使用更高版本,因为我们无法构建最新版本。)

我正在寻找一种可以让我编译的解决方法。无论是命令行选项还是重新配置 clang 的方法,它都不会做这种坏事。

我已经试过了 -U__USE_EXTERN_INLINES没有效果。

最佳答案

LLVM bug 5960表明此问题是由 clang 的 C99 支持与安装在 RHEL 5 上的旧版本 GNU libc 之间的交互作用引起的。对于我们这些坚持使用 RHEL 5 的人来说,似乎无法使用 clang -std=c99 -Ox对于任何 x > 0 .

关于clang - 如何阻止 Clang 复制标准 C 头文件中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com