그래서 안드로이드 용 ICU를 만드는 방법을 알아 내려고합니다. 처음에는 독립 실행 형 도구 체인으로 만들려고했지만 일부 전투 후에는 x86_64 아치 (다른 사람들과 시도하지 않았 음)에서이 작업을 수행 할 수있었습니다. 그러나 전 커스텀 빌드 시스템을 원하지 않기 때문에 툴 체인을 미리 빌드하는 방법을 결정하기로했습니다. 그리고 저는 그것이 매우 다른 행동을하는 것을 발견했습니다. 그것은 매우 이상합니다.안드로이드 NDK의 프리 빌더 툴 체인과 커스텀 툴 체인 컴파일러의 차이점은 무엇입니까?
ICU/소스/구성 --disable-공유 --enable-정적 --disable-dyload --disable-엑스트라 : 나는 실제로 독립형 도구 체인과 ICU를 구성 할 때 그래서 내 명령했다 --disable-tests --disable-samples --prefix =/icu/build --host = x86_64-linux-android --with-cross-build =/toplay/icu/icu_linux CC =/custom_toolchain/bin/clang CXX =/custom_toolchain/bin/clang ++ LD =/custom_toolchain/bin/x86_64-linux-android-ld AR =/custom_toolchain/bin/x86_64-linux-android-ar CFLAGS = "- fPIC -DANDROID -fdata-sections -ffunction-sections " CXXFLAGS ="- fPIC -DANDROID -frtti -fno-exceptions -fdata-sections -ffunctio N-섹션 "
은 그래서 가지는 모두 같은 명령이 있지만 모양을 사전 빌드 툴 체인 만 변경 컴파일러 및 도구 :
ICU/소스/--disable-공유 구성 할 - enable-static -disable-dyload --disable-extras --disable-tests --disable-samples --prefix =/icu/build --host = x86_64-linux-android --with-cross-build = toplay/icu/icu_linux CC =/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/clang CXX =/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/clang ++ LD =/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-ld AR =/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64 // bin/x86_64-linux-android-ar CFLAGS = "- fPIC -DANDROID -fdata-sections -ffunction 섹션 " CXXFLAGS ="- FPIC -DANDROID -frtti -fno-예외 -fdata 섹션 -ffunction 섹션 "
나는 매우 다른 구성 단계의 결과를 얻을 수 있습니다. 나는 there: 배치 어떤 그리고 독립형 도구 - 경우 (TLDR을 : 주요 DIFF는 크로스 컴파일 모드의 이해 할 수없는 사전 빌드 툴 체인의 경우 시스템에, 그것은 안드로이드에서 사용할 수 없습니다 strtod_l
, nl_langinfo
을 찾을 수 있어요) 체인은 초기에 ICU를 구축 할 수 있었고, 빌드 전 프로세스 구축 과정에서 결국 파산했습니다.
내 질문 : 프리 빌더 및 독립 실행 형 케이스의 컴파일러와 도구의 차이점과 사전 빌드에서 작동하도록 추가해야하는 플래그/설정은 무엇입니까?
아치 특정 디렉토리에서'configure'를 실행하는 것이 유용하다는 것을 알았습니다. obj/local/armeabi-v7a/objs/i cu'을 작성한 다음 글로벌 **'ndk-build' **의 한 단계로 수행 할 수 있습니다. 여기 예제를 참조하십시오 : http://stackoverflow.com/a/42964186/192373 –