Geralmente, g++
fornece as permissões de execução do arquivo criado. Se você não passar a opção -o
, o arquivo será nomeado a.out
.
Duas razões possíveis para o seu arquivo não ter o conjunto de bits de execução, com suas soluções:
-
O valor de umask é definido como um valor como 0133, evitando assim que o bit de execução seja definido. Solução: defina as permissões explicitamente:
chmod 755 a.out
- O sistema de arquivos em que você está trabalhando não suporta permissões do Linux. Este poderia ser o caso se você estiver colocando arquivos em uma unidade flash formatada em FAT32. Solução: faça o backup dos arquivos e formate-o para ext2 ou monte a unidade com
fmask=0022
ouumask=0022
(omitindofmask
). Veja a seção Opções de montagem para gordura na página de manual de montagem para mais detalhes.
Para scripts bash que não possuem o bit de execução definido, você pode executar bash file.sh
. Tal recurso existe para todos os arquivos com conteúdo executável (arquivos compilados e arquivos com uma linha shebang #!/path/to/interpreter
set). Para executar arquivos sem o conjunto de bits de execução, use o arquivo especial /lib/ld-linux.so.2
(ou /lib/ld-linux-x86-64.so.2
para aplicativos de 64 bits) para executar esse programa:
/lib/ld-linux-x86-64.so.2 a.out