Требования GCC для компиляции на OSX.Странное сообщение об ошибке - PullRequest
1 голос
/ 27 февраля 2011

Я получаю следующее сообщение об ошибке при попытке скомпилировать libSDL на OSX 10.6

/bin/sh ./libtool --mode=compile gcc -g -O2  -I./include -D_GNU_SOURCE=1 -DTARGET_API_MAC_CARBON -DTARGET_API_MAC_OSX -fvisibility=hidden  -I/usr/X11R6/include -DXTHREADS -D_THREAD_SAFE -force_cpusubtype_ALL -c ./src/audio/macosx/SDL_coreaudio.c  -o build/SDL_coreaudio.lo
libtool: compile:  gcc -g -O2 -I./include -D_GNU_SOURCE=1 -DTARGET_API_MAC_CARBON -DTARGET_API_MAC_OSX -fvisibility=hidden -I/usr/X11R6/include -DXTHREADS -D_THREAD_SAFE -force_cpusubtype_ALL -c ./src/audio/macosx/SDL_coreaudio.c  -fno-common -DPIC -o build/.libs/SDL_coreaudio.o
In file included from /System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:43,
                 from /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:83,
                 from /System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h:19,
                 from ./src/audio/macosx/SDL_coreaudio.c:24:
/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBundle.h:147: 
                      error: format string argument not a string type
make: *** [build/SDL_coreaudio.lo] Error 1

Согласно следующему сообщению в списке рассылки FLTK проблема связана с тем, что яЯ не использую предоставленный Apple GCC.На самом деле я использую свой собственный компилятор

$ gcc --version
gcc (GCC) 4.3.4
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

, который отличается от предоставленного Apple gcc:

/usr/bin/gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Что меня интересует, так это разница между этими двумя ... КонечноЯ не ожидаю, что вы будете знать, что происходит в моем компиляторе, но я ожидаю, что кто-то знает, что особенного в Apple gcc, чтобы ошибка не возникала.

1 Ответ

0 голосов
/ 23 июня 2011

GCC Apple был расширен для понимания того, что CFString - это тип строки, который может использоваться с __attribute__((format_arg(...))) (который используется для дополнительной проверки ошибок при передаче строк формата между функциями).В заголовке есть условие, которое пытается отключить это использование атрибута, если компилятор не поддерживает его, но он не может проверить специфичный для Apple GCC.похоже, что теперь оно реализовано в магистральном GCC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...