У меня есть несколько прекрасных кодов 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
Что происходит, так это то, чтоЗаголовочный файл GNU libc для <stdio.h>
объявляет определенные функции, включая putchar
, равными extern __inline__
, и по какой-то причине clang помещает определения в файлы .o
.Затем, когда компоновщик видит дубликаты определений, он блеет.
Я подозреваю, что проблема в конфигурации: когда я использую clang 2.7, поставляемый с Debian lenny, все компилируется.Но для класса, который я преподаю, программное обеспечение должно работать на Red Hat Enterprise Linux 5, и мой системный администратор создал clang 2.7 из исходного кода.(Мы не используем 2.9, потому что мы не смогли заставить его скомпилировать hello world, и мы не используем более позднюю версию, потому что мы не смогли получить последнюю версию для сборки.)
Я ищуОбходной путь, который позволит мне скомпилировать.Либо опция командной строки, либо способ перенастроить clang, чтобы он не делал это плохо.
Я уже пробовал -U__USE_EXTERN_INLINES
безрезультатно.