2014-09-17 4 views
3

Я пытаюсь скомпилировать lame mp3 encoder как статическую библиотеку для iOS. Я бы хотел поддержать все архитектуры, включая i686, armv6, armv7, armv7s и arm64. Вот мой сценарий сборки:Невозможно скомпилировать LAME для iOS

#!/bin/bash 
DEVELOPER=`xcode-select -print-path` 
SDK_VERSION="7.1" 
mkdir build 
function build_lame() 
{ 
    make distclean 
    ./configure \ 
    CFLAGS="-isysroot ${DEVELOPER}/Platforms/${SDK}.platform/Developer/SDKs/${SDK}${SDK_VERSION}.sdk" \ 
    CC="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch ${PLATFORM} -miphoneos-version-min=7.0 " \ 
    --prefix=/Users/mcrute/Desktop/lame \ 
    --host="arm-apple-darwin9" \ 
    --disable-shared \ 
    --enable-static \ 
    --disable-decoder \ 
    --disable-frontend 

make -j4 
cp "libmp3lame/.libs/libmp3lame.a" "build/libmp3lame-${PLATFORM}.a" 
} 
SDK="iPhoneSimulator" 
PLATFORM="i686" 
build_lame 
SDK="iPhoneOS" 
PLATFORM="armv6" 
build_lame 
PLATFORM="armv7" 
build_lame 
PLATFORM="armv7s" 
build_lame 
PLATFORM="arm64" 
build_lame 
lipo -create build/* -output build/libmp3lame.a 

Так ошибка выглядит следующим образом:

configure: error: in `/Users/ivan/Desktop/lame-3.99.5': 
configure: error: C preprocessor "/lib/cpp" fails sanity check 
See `config.log' for more details 
make: *** No targets specified and no makefile found. Stop. 
cp: libmp3lame/.libs/libmp3lame.a: No such file or directory 

Here мой config.log. | попытался удалить arm64 из целей сборки, но сценарий также не удался с той же ошибкой. Google сказал, что у меня нет gcc, но у меня есть .. Ищете любые предложения!

+0

'/ Библиотека/cpp' кажется странным путь ко мне (особенно учитывая путь к' clang') вы знаете, где это значение приходит? Есть ли 'cpp' двоичный файл под' XcodeDefault.xctoolchain' где-нибудь? Устанавливает ли этот параметр как путь для «CPP» решить проблему? –

+0

Я попытался добавить env CPP =/Приложения/Xcode.app/Содержание/Разработчик/Toolchains/XcodeDefault.xctoolchain/usr/bin/cpp. Но его все еще не работает. –

+0

Это правильный путь? Вы добавили это к вызову 'configure'? Ошибка вообще изменилась? –

ответ

0

Из комментария к ответу.

CPP по какой-то причине устанавливается очень странно.

Вы вручную устанавливаете CC на линии конфигурации на путь внутри XcodeDefault.

Попробуйте установить CPP на вызов configure для соответствующего двоичного кода cpp внутри XcodeDefault.

1

Проблема была решена путем добавления CPP = "*" переменная внутри функции configure. CPP был упущен в моем env. Отредактированный сценарий сборки должен выглядеть следующим образом:

#!/bin/bash 

DEVELOPER=`xcode-select -print-path` 

SDK_VERSION="7.1" 

mkdir build 

function build_lame() 
{ 
    make distclean 

    ./configure \ 
    CPP="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cpp" \ 
    CFLAGS="-isysroot ${DEVELOPER}/Platforms/${SDK}.platform/Developer/SDKs/${SDK}${SDK_VERSION}.sdk" \ 
    CC="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch ${PLATFORM} -miphoneos-version-min=7.0 " \ 
    --prefix=/Users/ivan/Desktop/lame-3.99.5 \ 
    --host="arm-apple-darwin9" \ 
    --disable-shared \ 
    --enable-static \ 
    --disable-decoder \ 
    --disable-frontend 

    make -j4 
    cp "libmp3lame/.libs/libmp3lame.a" "build/libmp3lame-${PLATFORM}.a" 
} 

PLATFORM="i686" 
SDK="iPhoneSimulator" 
build_lame 

PLATFORM="armv6" 
SDK="iPhoneOS" 
build_lame 

PLATFORM="armv7" 
build_lame 

PLATFORM="armv7s" 
build_lame 

PLATFORM="arm64" 
build_lame 

lipo -create build/* -output build/libmp3lame.a 
+0

Любая возможность сделать сборную библиотеку общедоступной? –

+1

Вы должны создать его самостоятельно, используя этот скрипт, если вы отредактируете '--prefix', чтобы указать на свою правильную папку с хромой. –

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