PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm statisch linken....



Lin728
24-11-2003, 21:06
Grüssi!

Ich versuche gerade ein Programm statisch zu linken, jedoch bereitet dies viel mehr Probleme als angenommen

Wenn ich folgende Zeile ausführe, läuft mir der Gcc zwar durch und linkt mir schön eine "test"-datei:


gcc *.o /usr/lib/libxml2.a /usr/lib/libgtk.a /usr/lib/libgdk.a /usr/lib/libgmodule.a /usr/lib/libglib.a /usr/lib/libdl.a /usr/X11R6/lib/libXi.a /usr/X11R6/lib/libXext.a /usr/lib/libm.a /usr/lib/libz.a /usr/X11R6/lib/libX11.a -o test -static


Jedoch lässt sich das Binary weder ausführen (weil angeblich die Rechte nicht stimmen, was nachweislich falsch ist chmod666/su hilft nix...) noch mit ldd ansehen.
Ldd sagt, dass es die angegebene Datei nicht gefunden hätte, obwohl ich den Dateinamen mit der bash-completition eingegeben habe.

Es geht mir darum nicht einmal die libc dynamisch zu linken, es soll schön "no dynamic linked executable" dastehen, wenn ich mit ldd drüberfahre.

Ich habe auch schon probiert, dass ganze mit -nostdlib anzugehen, dann allerdings stürzt er mit segafault ab.

peschmae
25-11-2003, 09:19
hast du tatsächlich chmod 666 benutzt?

Das kann dann nicht ausführbar sein, weil:
1: execute
2: write
4: read

6 wäre also read+write. Ich halte mehr von 755

Was das mit Ldd für n Problem ist kann ich auch nicht sagen. Ich glaube nicht, dass für Ldd die Binary executable sein muss...

MfG Peschmä

Lin728
25-11-2003, 11:51
Chmod a+x oder 755.....

Sagt aber noch immer, dass er die Datei nicht finden kann ;-(

RapidMax
25-11-2003, 12:03
Gib mir bitte noch ein paar Informationen, und zwar gleich nach dem Linken:


ls -l /absoluter/pfad/zu/dem/executable
file /absoluter/pfad/zu/dem/executable


Bei statisch gelinkten Libraries sollte AFAIK ldd diese nicht anzeigen.

Gruss, Andy

anda_skoa
25-11-2003, 17:27
Nenn es mal anders, damit du es sicher nicht mit /usr/bin/test oder dem Shell Command test verwechselst.

Eventuell könnte auch das Filesystem noexec gemountet sein.

Ciao,
_