armeabi-v7a 용 NDK (r11b)를 사용하여 안드로이드 용 라이브러리를 구축 중이며 다른 버전의 libgnustl_shared.so
을 발견했으며 이유를 이해할 수 없습니다. NDK 폴더에서 libgnustl_shared.so의 출처는 어디입니까? 내가 만든 후에 크기가 왜 다른가요?
- (안드로이드 NDK-r11b의 \ 소스에서 \ CXX-STL의 \의 GNU-된 libstdC++ \ \ armeabi-V7A \ libgnustl_shared.so 4.9 \ libs와)의 크기가 5593ko입니다.
- ndk-build.cmd를 사용하여 프로젝트 (여러 라이브러리)를 빌드 한 후 라이브러리 (libs \ armeabi-v7a \ libgnustl_shared.so)의 파일 크기는 694ko입니다.
- QtCreator를 사용하여 프로젝트 (여러 라이브러리)를 빌드 한 후 android-build \ libs \ armeabi-v7a \ libgnustl_shared.so 파일의 파일 크기는 846ko입니다. apk에 패키지 된 라이브러리 (android-build \ bin)는 동일한 크기입니다. 참고 또한 QtCreator 빌드 로그 보고서는 (안드로이드 NDK-r11b/소스/CXX-STL/GNU-된 libstdC++/4.9/libs와/armeabi-V7A/libgnustl_shared.so)
홈페이지에서 파일을 집어 질문 : 왜 컴파일 후 파일이 원래 파일보다 작습니까? 링커/컴파일러가 어느 시점에서 파일을 축소합니까 (사용되지 않는 기호 제거)?
보너스 질문 : 마침내 QtCreator 내 프로젝트를 빌드 (846ko의 libgnustl_shared.so로 끝나는) 내 그래서 파일 (그러나 libgnustl_shared.so) 자신에 그것을 통합 할 것이다 다른 사람에 제공 신청. 그는 자신의 응용 프로그램을 배포 한 후 IDE (안드로이드 스튜디오)에서 694ko의 libgnustl_shared.so와 함께 배포하고 내 코드가 STL 작업에서 충돌하기 시작합니다. 그 충돌은 libgnustl_shared.so와의 불일치로 인해 발생할 수 있습니까? 어떻게 수정해야합니까? (QtCreator는 libgnustl_shared.so의 정적 버전으로 구축 할 수 없으므로 배포를 위해 마지막 버전을 사용해야합니까?)
내 프로젝트는 QtCreator로 컴파일되지만 Qt는 사용하지 않습니다. (저는 Qt를 사용합니다. GUI에서 내 라이브러리를 테스트하지만 라이브러리 자체는 Qt를 전혀 사용하지 않습니다.
도움을 받으려면 고맙습니다. 당신은 'r11에서 나온 것이고 armeabi-v7a라면 모두 호환이 가능해야합니다.'라고 말하지만, 694ko로 잘라낸 것을 사용한다면, QtCreator는 846ko로 잘라낸 것입니다. 아마도 694ko 중 하나가 누락되었을 것입니다. 내 코드에 필요한 일부 기호는 ...? 그것들은 호환되지 않을 것입니다 ... 원래 파일을 사용하는 것이 안전할까요? (android-ndk-r11b/sources/cxx-stl/gnu-libstdC++/4. 9/libs/armeabi-v7a/l ibgnustl_shared.so는 제거되지 않았습니다). 모든 심볼이 있는지 확인 하시겠습니까? – jpo38