2015-02-05 2 views
3

Я загрузил проект с открытым исходным кодом Android и построил его на Linux (Ubuntu 12.04 64-bit), используя инструкции здесь :Запуск aapt на 64-разрядной Ubuntu 12.04: ошибка при загрузке разделяемых библиотек: libC++. So: Нет такого файла или каталога

http://source.android.com/source/building.html

я могу получить его, чтобы построить без проблем. Когда сборка завершена, меня интересуют инструменты построения, особенно aapt. Когда я запускаю его, я вижу следующее:

[email protected]:/aosp/out/host/linux-x86/sdk/sdk/android-sdk_eng.awt_linux-x86/build-tools/android-5.0.50.50.50.50$ ./aapt 
./aapt: error while loading shared libraries: libc++.so: cannot open shared object file: No such file or directory 

Так что это странно. Особенно если учесть, что LibC++ так прямо в том же каталоге:.

[email protected]:/aosp/out/host/linux-x86/sdk/sdk/android-sdk_eng.awt_linux-x86/build-tools/android-5.0.50.50.50.50$ ls -l 

-rwxrwxr-x 1 awt awt 1118633 Feb 4 19:42 aapt 
-rwxrwxr-x 1 awt awt 1261036 Feb 4 19:42 libc++.so 

$ file aapt 
aapt: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, not stripped 
$ file libc++.so 
libc++.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped 

Я построил и использовать более старые версии Android строить-инструментов, последний из которых был 4,3. Чтобы получить этот проект, мне нужно:

$ sudo apt-get install ia32-libs 

Это позволило мне запустить его, и это сработало. С последним от Android этого уже недостаточно. Я все еще получаю libc++.so: cannot open shared object file message.

Существуют и другие промежуточные версии aapt в каталоге out. Например, этот номер:

$ file/aosp/out/host/linux-x86/bin/aapt aapt: ELF 32-разрядный общий объект LSB, Intel 80386, версия 1 (SYSV), динамически связанная (использует общие библиотеки), для GNU/Linux 2.6.24, не разделенные $ ls -l/aosp/out/host/linux-x86/bin/aapt -rwxrwxr-x 1 awt awt 6978260 4 февраля 17:50 aapt

Этот пробег. Он еще не был удален, поэтому общие библиотеки все еще встроены в него. Если я раздержу его:

$ strip -s aapt 
$ ./aapt 
./aapt: error while loading shared libraries: libc++.so: cannot open shared object file: No such file or directory 

Затем мы вернемся к тому, с чего мы начали. Что я могу сделать, чтобы сделать лишенную версию так, как она привыкла?

ответ

0

Это более старый вопрос, но недавняя надпись на нем напомнила мне, что у меня есть решение.

Ответ приобщить расположение LIBC++ так текущего LD_LIBRARY_PATH:.

$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/libc++.so 
$ ./aapt -version 
Android Asset Packaging Tool 

Usage: 
    aapt l[ist] [-v] [-a] file.{zip,jar,apk} 
    List contents of Zip-compatible archive. 

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

  • Нет связанных вопросов^_^