6.21. Testen des neuen GCC

[Wichtig]

Wichtig

Alle Tests auf dieser Seite müssen fehlerlos beendet werden, geht auch nur einer schief, solltest Du aufhören und auf Fehlersuche gehen.

So, soweit wäre alles an seinem Platz, aber funktioniert das auch so wie vorgesehen? Vertrauen ist gut, besser ist ein Test:

echo 'main(){}' > dummy.c &&
cc dummy.c -v -Wl,--verbose &> dummy.log &&
readelf -l a.out | grep ': /lib'

Als Ergebnis sollte das folgende kommen:

[Requesting program interpreter: /lib/ld-linux.so.2]

Und ob wir die richtigen Startdateien haben, testen wir so:

grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log

Hier sollte das Ergebnis so aussehen:

/usr/lib/gcc/i686-pc-linux-gnu/4.6.2/../../../crt1.o succeeded
/usr/lib/gcc/i686-pc-linux-gnu/4.6.2/../../../crti.o succeeded
/usr/lib/gcc/i686-pc-linux-gnu/4.6.2/../../../crtn.o succeeded

Das wäre schon ein beachtlicher Erfolg und eine Tasse Kaffee wert!

grep -B4 '^ /usr/include' dummy.log

Die folgenden Pfade sollten angezeigt werden:

#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.6.2/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.6.2/include-fixed
 /usr/include

Beachte das die obigen Pfade durch das Ziel Triplet bei Dir anders lauten können!

Jetzt die Suchpfade testen:

grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'

Hier sollten diese vier angezeigt werden:

SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");

öffnet er auch die richtige libc?

grep "/lib.*/libc.so.6 " dummy.log
attempt to open /lib/libc.so.6 succeeded

Und benutzt den richtigen Linker:

grep found dummy.log
found ld-linux.so.2 at /lib/ld-linux.so.2

Jetzt löschen wir die folgenden Dateien:

rm -v dummy.c a.out dummy.log