Embora o pacote do Android Development Tools (ADT) esteja disponível como um pacote zip para o 'Linux 64 Bit', ele declara os seguintes requisitos :
As distribuições de 64 bits devem ser capazes de executar aplicativos de 32 bits.
E, de fato, apenas executar o eclipse empacotado em um sistema Fedora 17 de 64 bits resulta em erros, porque ele não pode 'encontrar' várias ferramentas de desenvolvimento, por exemplo, adb
ou aapt
:
Erro ao executar o aapt: Não é possível executar o programa "/ home / juser / local / adt-bundle-linux / sdk / platform-tools / aapt": error = 2, Nenhum arquivo ou diretório: error = 2, Nenhum arquivo ou diretório
O 'arquivo inexistente' é enganoso porque está lá (em $ HOME / local):
adt-bundle-linux/sdk/platform-tools/aapt
Mas não posso executá-lo no shell:
~/local $ ./adt-bundle-linux/sdk/platform-tools/aapt
zsh: no such file or directory: ./adt-bundle-linux/sdk/platform-tools/aapt
Olhando para o arquivo
$ file adt-bundle-linux/sdk/platform-tools/aapt
adt-bundle-linux/sdk/platform-tools/aapt: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8,
not stripped
nós vemos que é um binário 32. E parece que meu sistema (atualmente) não é capaz de executar aplicativos de 32 bits.
Como eu mudo isso? Como faço para um sistema Fedora atual de 64 bits capaz de executar aplicativos de 32 bits?
(É claro que também se pode perguntar por que alguém acaba colocando binários de 32 bits em um pacote binário chamado 'Linux 64 bits' ...)
Respostas:
Com relação ao eclipse não ser capaz de encontrar
adb
, etc, isso porque sem as bibliotecas compartilhadas de 32 bits necessárias para executá-las no sistema, elas não são executáveis.Com relação às bibliotecas de 32 bits, a situação é bastante simples: você só precisa instalar as bibliotecas de 32 bits apropriadas. Na instalação do fedora 17 de 64 bits que tenho aqui, as bibliotecas primárias de 64 bits estão em / usr / lib64 e as bibliotecas opcionais de 32 bits estão em / usr / lib. Então, se eu chamar
ldd
sdk / platform-tools / adb:Observe que todos estão em / lib, que é um link simbólico para / usr / lib (não / usr / lib64). Veja:
Uma biblioteca C padrão de 32 bits. O que você pode fazer é acessar as ferramentas sdk de 32 bits e verificar para que elas estão vinculadas
ldd
. Não tenho um exemplo em mãos, mas se algo estiver faltando, éldd
relatado algo como:Primeiro , para o ldd funcionar, você precisará do carregador de 32 bits que acompanha o glibc de 32 bits (sem isso, o ldd o chamará de arquivo não executável e não dirá nada):
Isso está truncado, mas o pacote x86_64 é o que você já possui; o i686 é a versão de 32 bits. Então, basta instalar isso.
Você não precisa de nenhum dos pacotes 'devel', pois nada é compilado. Além disso, palpites e
yum whatprovides
/yum search
devem ajudar (olhando a lista de adb, também existem versões de 32 bits da biblioteca C ++ lib, ncurses, pthreads e algumas coisas que não sei).Dica rápida sobre o uso
whatprovides
:;)
fonte
ldd
. Pelo motivo: não estou convencido, chamandofile
a versão de pacote deadb
monitores: executável LSF ELF de 32 bits, Intel 80386 - nada a ver com emulação de ARM - e / usr / bin / adb (do pacote fedora android-tools) está realmente disponível como executável LSF de 64 bits da ELF, x86-64 .adt-bundle-linux/sdk/platform-tools/adb
ele exibirá 'não é um executável dinâmico'. Em relação ao PATH - esse não é o problema - especificar completamente o caminho de, por exemplo./adt-bundle-linux/sdk/platform-tools/adb
, um terminal não funciona (resulta em 'zsh: não existe esse arquivo ou diretório [..]').Você precisa instalar o glibc de 32 bits:
Isso remove a mensagem enganosa "não existe esse arquivo ou diretório" ao tentar executar um binário de 32 bits. Com isso, o sistema Fedora de 64 bits é capaz de executar binários de 32 bits.
Isso também remove a mensagem enganosa 'não é um executável dinâmico'
ldd
ao chamarldd
um executável dinâmico de 32 bits.Agora você deve instalar as bibliotecas ausentes de 32 bits nos quais os binários
adt-bundle-linux/sdk/platform-tools
estão vinculados:É isso aí.
fundo
Alguns antecedentes de como obter os nomes dos pacotes acima. Por exemplo, olhando para a saída de
significa que ainda faltam duas bibliotecas para adb.
Para cada 'não encontrado', precisamos procurar o nome do pacote, por exemplo:
Agora pegamos o nome da base do pacote e adicionamos '.i686' para obter a versão de 32 bits.
fonte
glibc.i686
permiteldd
que funcione corretamente com os binários i386.Você pode instalar o pacote necessário com:
fonte