bash: ./helloworld_s: no such file or directory. The file is clearly there

As explained in redhat bug #868662 , the recommanded way to link is to let gcc call ld like below;

> gcc -nostartfiles helloworld-lib.o -o helloworld_s -lc

Which results in correct linking;

> ldd helloworld_s
        linux-vdso.so.1 =>  (0x00007ffd283bf000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fd011b62000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd011f2f000)

And execution goes fine;

> ./helloworld_s
Hello, world!

Why does ld link to /lib/ld64.so.1 which does not exist ?
Because this is the default setup for a generic system, not only Linux.

Tags:

Linux

Bash