2014-09-17 2 views
3

iOS 용 정적 라이브러리로 색상이있는 mp3 인코더를 컴파일하려고합니다. i686, armv6, armv7, armv7s 및 arm64를 포함한 모든 아키텍처를 지원하고 싶습니다.iOS 용 LAME을 컴파일 할 수 없습니다.

#!/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 

Hereconfig.log 여기 내 빌드 스크립트입니다. | 빌드 대상에서 arm64를 제거하려고했지만 스크립트도 동일한 오류로 실패했습니다. Google은 내가 gcc를 가지고 있지 않다고 말했지만 .. 나는 어떤 제안을 찾고있다!

+0

'/ lib 디렉토리/cpp'하면 그 값은 어디에서 오는가 알고있다 (특히 clang''의 경로 지정) 나에게 이상한 경로를 보인다? 'XcodeDefault.xctoolchain' 아래에'cpp' 바이너리가 있나요? 그것을 'CPP'의 경로로 설정하면 문제가 해결됩니까? –

+0

나는 env CPP =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cpp를 추가하려고 시도했다. 하지만 여전히 작동하지 않습니다. –

+0

그게 올바른 길입니까? 당신은 그것을'configure' 호출에 추가 했습니까? 오류가 전혀 변경되지 않았습니까? –

답변

0

댓글에서 답변.

CPP은 어떤 이유로 인해 매우 홀수 값으로 설정됩니다.

구성 라인의 CC을 수동으로 XcodeDefault 안에있는 경로로 설정하고 있습니다.

구성 호출에서 CPP을 적절한 cpp 이진 XcodeDefault 내부로 설정하십시오.

1

구성 기능 내에 CPP = "*"변수를 추가하면 문제가 해결되었습니다. CPP는 내 환경에서 빠졌어요. 편집 빌드 스크립트는해야는 다음과 같습니다

#!/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'를 편집하여 올바른 절름발이 폴더를 가리키는 한 그 스크립트를 사용하여 직접 빌드 할 수 있어야합니다. –