Android Toolchain Bangunan tidak dapat menemukan / tidak ada direktori header STL

Halsafar 07/12/2012. 1 answers, 1.713 views
android android c++ compiler-construction toolchain android-ndk android-ndk

Saya telah membuat toolchain NDK Android secara manual. Semuanya berfungsi kecuali ketika saya menggunakan compiler itu tidak dapat menemukan hal-hal dasar STL seperti. Jadi tidak dapat mengkompilasi kode yang berisi STL karena tidak tahu di mana mencari header secara default. Saya tidak pernah mengalami masalah ini sebelum menggunakan rantai alat khusus atau prebuilt. Namun jika saya secara manual menambahkan direktori termasuk seperti

-I$(NDK_TOOLCHAIN)/arm-linux-androideabi/include/c++/4.6/ 

Maka itu bekerja dengan baik. Sangat sulit untuk menambahkan setiap dir penting secara manual (ada lebih dari yang satu ini). Pasti ada yang rusak dalam prosesnya.

Ini adalah langkah-langkah yang saya ikuti untuk membangunnya:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl

 Download NDK

 Untar NDK to [SOME_LOCATION], using /opt/ndk/

 Set NDK_ROOT=/opt/ndk/

  ./build/tools/download-toolchain-sources.sh src/

 Download MPC 0.9

 Move mpc tar to ./src/mpc/

 ./build/tools/build-gcc.sh --gmp-version=4.3.2 --mpc-version=0.9 --mpfr-version=2.4.2 --binutils-version=2.21 $(pwd)/src $(pwd) arm-linux-androideabi-4.6

 ./build/tools/build-gcc.sh --gmp-version=4.3.2 --mpc-version=0.9 --mpfr-version=2.4.2 --binutils-version=2.21 $(pwd)/src $(pwd) x86-4.6

 ./build/tools/build-gcc.sh --gmp-version=4.3.2 --mpc-version=0.9 --mpfr-version=2.4.2 --binutils-version=2.21 $(pwd)/src $(pwd) mipsel-linux-android-4.6 

Semua file STL ada di lokasi yang tepat. Semua header dan pustaka terkompilasi untuk setiap versi jika saya membangun toolchain STANDALONE setelah digunakan sebagai referensi toolchain yang dibuat khusus ini.

== UPDATE

Memaksa gcc untuk memuntahkannya termasuk jalur pencarian:

echo "#include  int main(){}" > t.c; /opt/android-9_arm/bin/arm-linux-androideabi-gcc -v t.c; rm t.c 

Ini berisi jalur pencarian di bawah meliputi:

/opt/android-9_arm/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/include 

Di lokasi itu memang hal-hal berikut ./cxx/4.6/STL_HEADERS

Membandingkan output dengan build NDK dari google memang berbeda di titik-titik serius. Pertanyaan sebenarnya adalah bagaimana saya menjamin build custom saya dari GCC menunjuk ke lokasi header G ++ STL yang tepat.

1 Answers


Halsafar 08/03/2012.

Ternyata itu adalah bug di make-standalone-toolchain.sh. Perbaikannya adalah:

mv $NDK_TOOLCHAIN/arm-linux-androideabi/include/c++/4.6 $NDK_TOOLCHAIN/arm-linux-androideabi/include/c++/4.6.x-google 

Itu memperbaikinya untuk sebagian besar. Namun sekarang ndkr8b telah dirilis dengan resmi GCC 4.6 mendukung bug ini masih ada (per 25 Juli 2012). Detail lebih lanjut tentang beberapa bug yang terkait dengan toolchain yang berdiri sendiri (http://code.google.com/p/android/issues/detail?id=35279).

Related questions

Hot questions

Language

Popular Tags