Qual é a extensão dos arquivos de saída da operação do gcc?

1

Se eu fizer gcc filename.c , receberei a.out

Depois de executar gcc -o output_name filename.c , obtemos o arquivo executável output_name .

Qual é a extensão deste arquivo?

    
por srk_cb 10.05.2015 / 07:59

2 respostas

5

Ao contrário do Windows, o Linux não depende da extensão de um arquivo para determinar que tipo de arquivo é. Em vez disso, ele verificará os primeiros bytes do arquivo e determinará o tipo de arquivo.

Assim, o arquivo de saída fornecido por gcc requer sem extensão . Você pode adicionar qualquer extensão desejada (alterando -o output_name para -o output_name.abcd ), mas isso não fará diferença alguma.

Você pode dar uma olhada na saída do comando

file ./filename

por exemplo

:~$ file output_file 
output_file: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=9bc9fabf05a3d2e58c7780c48cd873cb2955b2ec, not stripped
:~$ 
    
por Registered User 10.05.2015 / 08:27
3

Não tem um. Você pode fazer gcc -o myprog.exe filename.c e será chamado myprog.exe . Ao contrário do Windows, não há extensão padrão para arquivos executáveis no Linux. Se você quiser marcar um arquivo como executável, faça chmod +x file .

ls -l mostra se o sinalizador x (executável) está definido para o seu arquivo:

user@host# ls -l filename
-rwxr-x--x 1 ubu users 42 Mai 10 08:16 filename

- means its a file (d would be directory,see below)
r means readable
w means writeable
x means executable

O primeiro triplo é para o proprietário ( ubu neste caso), o segundo triplo é para o grupo proprietário (usuários) e o o último triplo é para todos os outros.

Para diretórios, o x significa "pode entrar no diretório", portanto, se x não estiver definido, você não poderá fazer cd directory .

No Linux File Extensions não são especiais, são apenas parte do nome dos arquivos.

    
por Uwe Burger 10.05.2015 / 08:26