Wie im Redhat-Fehler Nr. 868662 erläutert, besteht die empfohlene Methode zum Verknüpfen darin, gcc ld wie unten aufrufen zu lassen:
> gcc -nostartfiles helloworld-lib.o -o helloworld_s -lc
Was zu einer korrekten Verknüpfung führt;
> ldd helloworld_s
linux-vdso.so.1 => (0x00007ffd283bf000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd011b62000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd011f2f000)
Und die Ausführung geht gut;
> ./helloworld_s
Hello, world!
Warum verlinkt ld auf /lib/ld64.so.1, was nicht existiert?
Weil dies die Standardeinstellung für ein generisches System ist, nicht nur für Linux.