Ubuntu 64 bits roda programas 32 bits?

OBS: Não sei se está no fórum correto.

Olá

Sou muito novato no mundo Linux.

Tenho duas máquinas Ubuntu 12.04, uma 32 e outra 64 bits. Criei um programinha bem besta em C++ que multiplica duas matrizes de números inteiros usando pthread. Estou usando Eclipse CDT.

Quando compilei o programa na máquina 32 bits como Release consegui executar o programa pela linha de comando ./ProgParalSequencial e rodou muito bem. Passei o mesmo programa para a máquina de 64 bits e, pela linha de comando, o Ubuntu disse Arquivo ou diretório não encontrado. Tenho absoluta certeza de que o arquivo existe, uma vez que eu usei a tecla Tab do teclado e o próprio Ubuntu escreveu o nome do arquivo na linha de comando.

Como curiosidade, peguei o código e o compilei como Release na máquina de 64 bits (exatamente o mesmo código, NADA foi mudado) e consegui executar o programa na máquina de 64 bits.

Alguém aqui sabe de algum problema de incompatibilidade entre Ubuntu 32 e 64 bits? Será que alguém que já tenha passado pelo mesmo problema pode me ajudar? Estou um pouco receoso porque esse programa precisa rodar em uma terceira máquina Linux, do laboratório da universidade, e não sei se terei de compilá-lo lá também.

Você provavelmente não deu permissão de execução nesse arquivo novo.

Fala “renamed”

Recentemente fiz a mesma pergunta.

No meu caso, instalei o ubuntu 12.10 64 bits e ao instalar o JDK (versão 32 bits) não funcionava de jeito nenhum, ai testei baixando a versão 64 bits, só assim funcionou. O postgresql foi a mesma coisa, não instalou a versão 32, só a 64!

Então, essas são as permissões do arquivo de 32 bits no Ubuntu 64 bits…

E isso é o que acontece quando executo os dois arquivos no Ubuntu 64 bits

O arquivo ProgParalSequencial_64, versão 64 bits do programa, executa sem problemas (esse espação em branco significa que ele executou corretamente hehe). Já o ProgParalSequencial_32 acontece a mensagem de erro que disse acima.

Será que alguém pode me dar uma luz?

Obrigado.

Bom, programas em C++ normalmente usam uma biblioteca de run-time que deve estar instalada na máquina onde vão rodar.

Pelo que imagino, sua máquina Ubuntu 64 bits não tem essa biblioteca de run-time de 32 bits instalada.

Dê uma olhada em:

http://pt.kioskea.net/faq/8736-compilar-testar-em-32-bits-no-ubuntu-x86-64

No seu caso (em que você só quer rodar os programas de 32 bits, acho que seja suficiente apenas instalar o pacote libc6-i386 . Se quiser rodar os programas que foram compilados em modo debug, então precisará de instalar também lib6-dev-i386

[quote=entanglement]Bom, programas em C++ normalmente usam uma biblioteca de run-time que deve estar instalada na máquina onde vão rodar.

Pelo que imagino, sua máquina Ubuntu 64 bits não tem essa biblioteca de run-time de 32 bits instalada.

Dê uma olhada em:

http://pt.kioskea.net/faq/8736-compilar-testar-em-32-bits-no-ubuntu-x86-64

No seu caso (em que você só quer rodar os programas de 32 bits, acho que seja suficiente apenas instalar o pacote libc6-i386 . Se quiser rodar os programas que foram compilados em modo debug, então precisará de instalar também lib6-dev-i386 [/quote]

Sim. Será preciso instalar as bibliotecas de 32 bits.
(ia32-libs)intel archtecture para 32 bits:

sudo apt-get install ia32-libs

sim, o 64x executa aplicativos 32bits, porém tem que instalar umas bibliotecas que o google pode te informar com precisão.
depois de instalar as libs, de um chmod +x e rode o garoto.

Oi pessoal

sudo apt-get install ia32-libs

me serviu bem, fica ai pra quem tiver o mesmo problema no futuro.

abs

[quote=renamed]Oi pessoal

sudo apt-get install ia32-libs

me serviu bem, fica ai pra quem tiver o mesmo problema no futuro.

abs[/quote]

Essas libs de 32 bits são essenciais para os drivers de vídeo das placas aceleradoras(nvídia, amd …) porque sem elas OpenGl não terá suporte a programas de 32 bits. A primeira coisa a se fazer quando for compilar um novo módulo de vídeo para o kernel é instalá-las.