Предупреждение GCC «несовместимое неявное объявление встроенной функции« printf »» в Mac OS X Snow Leopard - PullRequest
3 голосов
/ 26 октября 2011

После очень долгого перерыва в программировании на С я решил попробовать и снова ознакомиться с ним.Я пытаюсь скомпилировать программу hello.c, но у меня проблемы.Вот код:

#include <stdio.h>
main()
{
  printf("Hello\n");
}

А вот вывод от gcc:

$ gcc -o hello hello.c 
hello.c:1:19: error: stdio.h: No such file or directory
hello.c: In function ‘main’:
hello.c:4: warning: incompatible implicit declaration of built-in function ‘printf’
$

Я работаю на Mac под управлением Snow Leopard (10.6.8) и Xcode 3.2.6.

Вот вывод 'gcc -v':

$ gcc -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5666.3~6/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)
$

gcc не может найти stdio.h, который находится в /Developer/SDKs/MacOSX10.6.sdk/usr/include,Хотите знать, как установить переменную окружения, чтобы мне не приходилось указывать путь включения в командной строке.Я получаю еще одну ошибку при указании ее в командной строке:

$ gcc -I/Developer/SDKs/MacOSX10.6.sdk/usr/include -o hello hello.c 
ld: library not found for -lcrt1.10.6.o
collect2: ld returned 1 exit status
$

Моя переменная среды LD_LIBRARY_PATH:

$ echo $LD_LIBRARY_PATH
/Developer/SDKs/MacOSX10.6.sdk/usr/lib
$

Любая помощь приветствуется.

Спасибо,Кит

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

У вас уже есть ответ для вашей конкретной проблемы, но я видел эту проблему в OS X по другой причине, так что это может быть полезно для других людей.

Если вы пытались установить пользовательский скомпилированныйверсия GCC и она находится в / usr / local / bin, или вы добавили запись PATH в / opt / sw или что-то подобное, вы можете получить эту ошибку.

Возможные причины наличия пользовательского GCC, но нетзаголовки:

  • Вы пытались удалить пользовательскую скомпилированную версию, но забыли удалить двоичный файл gcc.
  • Вы использовали неправильные параметры конфигурации при сборке пользовательского GCC.
  • Вы установили заголовочные файлы в неправильный каталог.(Очень похоже на последний вариант.)
3 голосов
/ 26 октября 2011

Вам необходимо перезапустить установщик Xcode и проверить опцию для UNIX Development:

enter image description here

Без этой опции вы все еще можете использовать Xcode, но не получите /usr/include и т. Д. Для сборок командной строки gcc.

...