O comando 'size' do Linux fornece resultados diferentes de 'ls'

1

Eu tenho um executável que eu construo no Ubuntu 16.04. O tamanho do arquivo mostrado na GUI e através do comando ls -l é:

-rwxrwxr-x 1 alibivmuser alibivmuser 19108760 dic 20 15:49 NreSpeechApplication

E eu sei que isso significa que o tamanho real do arquivo é de 19 MB. No meu sistema de arquivos, o tamanho é de alguma forma semelhante (usando ls -s):

18664 NreSpeechApplication

Eu esperava que o tamanho de saída do comando size no Linux daria algo parecido, mas ele mostra um total de mais ou menos 1.8MB:

text    data     bss     dec     hex filename
1806360    2416    4552 1813328  1bab50 NreSpeechApplication

Então, minha pergunta é: por que os dois resultados são tão diferentes? E de onde vêm esses MBs adicionais para formar 18MB a partir de 1,8?

    
por Carlo Benussi 23.12.2016 / 09:05

2 respostas

2

size mostra as seções tradicionais de um arquivo executável.

Observe que essas seções tradicionais não incluem informações de depuração, por exemplo. Depurar informações ocupa muito espaço. Para uma lista completa das seções, execute objdump -h NreSpeechApplication

O total (dec / hex) não está diretamente ligado ao tamanho do arquivo por outro motivo: ele inclui bss . Esta seção é inicializada como zero ao carregar o executável, portanto, não é incluída no arquivo.

Também é possível que o arquivo seja apenas anormal, por exemplo tem lixo aleatório adicionado no final:).

    
por 23.12.2016 / 09:57
3

ls mostra o tamanho do arquivo real, a quantidade de bytes quando você o abre e lê.

Se você quiser saber quanto espaço o arquivo ocupa em seu disco, use du -h . du leva em conta os blocos do sistema de arquivos.

Example: If you have a file with the size of 1500 and your block size is 1024, du should show 2048 (because the file does not 'fit' into one block, while ls will show you 1500.

size mostra o tamanho da imagem de tempo de execução do seu executável. Como em, seu executável usará aproximadamente 1.8MB de RAM / ROM. Isso não está diretamente relacionado ao tamanho do arquivo.

If you want to know how much RAM/ROM an executable will take excluding dynamic memory allocation, size gives you the information you need.

    
por 23.12.2016 / 09:42