arquivo executável após a transferência para outro sistema

1

Eu tinha um programa em C e o tornei executável em meu 32 linux mint. Para fins de atribuição, tive que testar se estava funcionando em computadores de pool universitários. Eu sinceramente não sei quais distribuições linux estão instaladas lá, só tive dois minutos não deu uma olhada, mas eu sei que é também um sistema de 32 bits.

Então, quando eu tentei executá-lo no terminal ( ./program ), eu recebi bash permission denied erro, o que eu sei significa que o arquivo não é executável Então eu corri o comando chmod u+x program novamente para torná-lo executável e então trabalhei, meu programa estava funcionando muito bem como no meu laptop.

Alguém sabe o que pode ser a razão para isso? Quero dizer, obviamente, meu arquivo é executável, pelo menos no meu linux mint, qual pode ser a razão pela qual ele não está em alguma outra distribuição linux?

Talvez eu tenha que torná-lo executável de outra maneira? Eu só conheço o mencionado anteriormente chmod u+x program .

Eu quero evitar qualquer problema no futuro e não receber nota 0 devido a um erro tão bobo.

ATUALIZAÇÃO:

como mencionado nos comentários, a maneira como eu transferi meu arquivo para o computador da universidade foi: baixá-lo do Google Drive. Agora testei no meu laptop mas para outro sistema (UBUNTU), tentei novamente baixando do google drive o arquivo único e o problema era o mesmo: não executável. Então eu tar-ed o arquivo (como Richard sugeriu) e depois de extraí-lo arquivo foi executável imediatamente, então isso me leva a conclusão de que se eu tar ele, também deve ser executável para qualquer outro sistema, neste caso meu computador da universidade . Espero que funcione. Obrigado a todos pela ajuda.

    
por Leonardo 19.01.2017 / 19:15

1 resposta

3

Como você não tinha feito chmod u+x , os sistemas de arquivos não unix não armazenam esses dados, eles estão fora do arquivo: o bit de execução não foi copiado para o google-drive. Portanto, você teve que executar chmod novamente.

Na máquina que você compilou, você não precisou executar chmod , pois o compilador faz isso para você.

Contanto que você o mantenha dentro do ecossistema Unix, o bit x permanecerá. No entanto google-drive não é Unix (embora seja executado no Unix). tar é um programa que pode envolver uma carga de arquivos / diretórios em um único arquivo, junto com todos os metadados.

    
por 19.01.2017 / 19:23

Tags