我已經得到了從多個.c文件整理了一些非常可愛的C99代碼,當我與鐺2.7編譯,我得到了一些非常奇怪的錯誤:如何停止Clang在標準C頭文件中複製函數?
/usr/include/bits/stdio.h:77: multiple definition of `putchar'
a2test.o:/usr/include/bits/stdio.h:77: first defined here
發生了什麼事是,GNU libc的頭<stdio.h>
的文件聲明某些功能(包括putchar
)爲extern __inline__
,由於某些原因,鐺將定義放入.o
文件中。然後,當鏈接器看到重複的定義時,它會褪色。
我懷疑一個配置問題:當我使用Debian lenny附帶的clang 2.7時,一切都會編譯。但對於我正在教授的課程,軟件必須在Red Hat Enterprise Linux 5上運行,而我的系統管理員已經從源代碼構建了clang 2.7。 (我們不使用2.9,因爲我們無法得到它來編譯你好世界,我們不使用更高版本,因爲我們無法獲得最新的構建。)
我要尋找一個解決辦法這將允許我編譯。無論是一個命令行選項或重新配置clang的方式,所以它不會做這件壞事。
我已經試過-U__USE_EXTERN_INLINES
沒有效果。
代碼編譯,但到處都噴出警告。由於使用clang而不是gcc的全部目的是爲了獲得更好的錯誤消息,因此這是一個不同方向的進展。感謝您的嘗試。 –
+1,因爲它向我提供了我們軟件中5 C源文件的解決方法。 – Shirkrin