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

Nor*_*sey 8 glibc clang

我有一些非常可爱的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
Run Code Online (Sandbox Code Playgroud)

发生了什么事是,在GNU libc的头文件中<stdio.h>声明的某些功能,其中包括putchar,要extern __inline__,出于某种原因,铛是把定义成.o文件.然后,当链接器看到重复的定义时,它会变暗.

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

我正在寻找一个允许我编译的解决方法.无论是命令行选项还是重新配置clang的方式,所以它不会做坏事.

我已经尝试-U__USE_EXTERN_INLINES过没有效果.

Nor*_*sey 6

LLVM 错误5960显示此问题是由clang的C99支持与RHEL 5上安装的旧版GNU libc之间的交互引起的.对于我们这些坚持使用RHEL 5的人来说,它似乎不可能clang -std=c99 -Ox用于任何x > 0.