2013-04-06 2 views
0

Я использую много возможностей C++ 11, поэтому я скомпилирую свой код на C++ с помощью macports gcc/g ++.Portaudio не будет компилироваться с использованием macports GCC 4.8 (ошибка в параметре командной строки).

Я не могу получить Portaudio для компиляции с использованием macports gcc 4.8. Используя стабильную сборку (pa_stable_v19_20111121.tgz), конфигурирование с GCC-MP-4.8, как и resuls компилятора:

bash-3.2$ make 
mkdir lib 
mkdir -p src/common src/hostapi/alsa src/hostapi/asihpi src/hostapi/asio src/hostapi/coreaudio src/hostapi/dsound src/hostapi/jack src/hostapi/oss src/hostapi/wasapi src/hostapi/wdmks src/hostapi/wmme src/os/unix src/os/win 
touch lib-stamp 
/bin/sh ./libtool --mode=compile /opt/local/bin/gcc-mp-4.8 -c -std=c99 -O2 -Wall -pedantic -pipe -fPIC -DNDEBUG -DPA_LITTLE_ENDIAN -I./include -I./src/common -I./src/os/unix -Werror -arch i386 -arch ppc -arch x86_64 -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.3 -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DHAVE_NANOSLEEP=1 -DPA_USE_COREAUDIO=1 src/common/pa_allocation.c -o src/common/pa_allocation.lo 
libtool: compile: /opt/local/bin/gcc-mp-4.8 -c -std=c99 -O2 -Wall -pedantic -pipe -fPIC -DNDEBUG -DPA_LITTLE_ENDIAN -I./include -I./src/common -I./src/os/unix -Werror -arch i386 -arch ppc -arch x86_64 -arch ppc64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.3 -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DHAVE_NANOSLEEP=1 -DPA_USE_COREAUDIO=1 src/common/pa_allocation.c -fno-common -DPIC -o src/common/.libs/pa_allocation.o 
gcc-mp-4.8: error: unrecognized command line option '-arch' 
gcc-mp-4.8: error: unrecognized command line option '-arch' 
make: *** [src/common/pa_allocation.lo] Error 1 

Используя самую последнюю ежедневную сборку (Apr 5), я получаю кучу «плохого имя регистра "ошибка:

/bin/sh ./libtool --mode=compile /opt/local/bin/gcc-mp-4.8 -c -std=c99 -O2 -Wall -pedantic -pipe -fPIC -DNDEBUG -DPA_LITTLE_ENDIAN -I./include -I./src/common -I./src/os/unix -Werror -arch i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.3 -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DHAVE_NANOSLEEP=1 -DPA_USE_COREAUDIO=1 src/common/pa_allocation.c -o src/common/pa_allocation.lo 
libtool: compile: /opt/local/bin/gcc-mp-4.8 -c -std=c99 -O2 -Wall -pedantic -pipe -fPIC -DNDEBUG -DPA_LITTLE_ENDIAN -I./include -I./src/common -I./src/os/unix -Werror -arch i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.3 -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DHAVE_NANOSLEEP=1 -DPA_USE_COREAUDIO=1 src/common/pa_allocation.c -fno-common -DPIC -o src/common/.libs/pa_allocation.o 
{standard input}:5:bad register name `%r13' 
{standard input}:7:bad register name `%rsi' 
{standard input}:8:bad register name `%r12' 
{standard input}:10:bad register name `%rdx' 
... 

(более плохие ошибки имени регистра следует)

+0

Пара вещей: clang поддерживает C++ 11 с -std = C++ 11, а также библиотеки с флагом -stdlib = libC++. Что касается вашей проблемы, я столкнулся с той же проблемой несколько недель назад и в итоге использовал fmod вместо звука порта. Кроме того, я предпочитаю homebrew для macports, так как я нашел в своем опыте, что пакеты, как правило, более актуальны. Но я не понимаю, почему порт аудио не компилируется здесь. – user149100

+0

Возможно, я использую это неправильно, но, несмотря на всеобъемлющий контрольный список C++ 11 по адресу http://clang.llvm.org/cxx_status.html, я сталкиваюсь с множеством раздражающих небольших сбоев (самые последние отсутствовали std :: stoi и конструкторы fstream, не принимающие строку C++) – daj

ответ

1

Вашего плохое сообщение регистрации происходит из того факта, что CFLAGS являются содержащими как -arch i386 и x86_64 -arch. Первый учитывается ... таким образом, ошибка о плохом регистре для всех конкретных регистров x86_64. Легким обходным решением является редактирование Makefile и удаление -arch i386 в переменных CFLAGS и SHARED_FLAGS. Я использую компилятор GCC 4.7 и отмечаю, что мне также нужно было удалить флаги -Werror (ошибка при предупреждении) из-за следующего предупреждения:

переменная 'err' установлена, но не используется [-Werror = unused-but- set-variable]

Я смотрю прямо сейчас, как исправить конфигурацию.

 Смежные вопросы

  • Нет связанных вопросов^_^