Na verdade, arquivos ".o" podem ser executados se não forem arquivos ".o". Ou seja se você copiar "ls" para "ls.o", você pode executar ls.o e ele lhe dará a saída do comando 'ls'. BTW, @jaychris, você provavelmente não iria querer colocar a saída de uma compilação em um arquivo de origem "C". Você poderia , mas como ter um executável "ls.o", pode ser confuso.
Não vejo nada na postagem original de que o arquivo que o usuário está tentando executar tenha permissão de executável. Se o autor puder fazer um "\ ls -l datasize.o, eles mostram quais permissões ele tem nele.
Note que simplesmente definir o bit executável (com "chmod + x datasize.o") não o tornará um programa que pode ser executado se for realmente um arquivo que pode ser vinculado. Nesse caso, se datasize.o tiver um "main", você pode tentar o que @jaychris estava insinuando ... use gcc -o datasize datasize.c ... que não produzirá um linkable "datasize.o ", mas vai tentar criar um executável e colocá-lo em um arquivo chamado" datasize "(que você ainda tem que habilitar a permissão" executável "com" chmod + x datasize ").
BTW, você pode querer ler a manpage "chmod" ("man 1 chmod").
Espero que isso ajude (?) ...