Hi, Many thanks for helping me. I inspected the bash command history to learn what was causing gcc to link 'bogus' executables and found the cause was -c precisely as you explained. When I removed it a valid executable was produced that could be run without problems.
Edward On 10/06/2016, KatolaZ <kato...@freaknet.org> wrote: > On Fri, Jun 10, 2016 at 01:42:45PM +0200, Edward Bartolo wrote: >> Hi, >> >> While dissecting the sysvinits (/sbin/init) internals I found that gcc >> can link garbage into an executable file. Attempting to run the >> resultant garbage results in unknown executable format or something >> similar. >> >> I used the -c directive directly on the source code. The command is this: >> gcc -ansi -O2 -W -Wall -D_GNU_SOURCE -c startos.init.c -o startos.init >> > > It is not gcc "linking garbage into an executable file". With the > command above you are not *linking* anything. You are just compiling > your .c into a relocatable .o "object file", which contains only the > machine code of your program, and nothing else. In orer to transform > it to an executable, you should then link it "with some more > stuff(tm)", e.g. by using ld. > > Anyway, the easiest way to obtain an executable is by letting gcc do > the linking, at least in this *basic* case. If you just get rid of the > "-c" and let gcc handle the rest, you will end up having a proper > executable file into "startos.init". > > HND > > KatolaZ > > -- > [ ~.,_ Enzo Nicosia aka KatolaZ - GLUGCT -- Freaknet Medialab ] > [ "+. katolaz [at] freaknet.org --- katolaz [at] yahoo.it ] > [ @) http://kalos.mine.nu --- Devuan GNU + Linux User ] > [ @@) http://maths.qmul.ac.uk/~vnicosia -- GPG: 0B5F062F ] > [ (@@@) Twitter: @KatolaZ - skype: katolaz -- github: KatolaZ ] > _______________________________________________ > Dng mailing list > Dng@lists.dyne.org > https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng > _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng