Problem Befehle auszuführen

Status
Für weitere Antworten geschlossen.

McClean

Neuer User
Mitglied seit
21 Apr 2006
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Hi Leute,

ich hab gerade sdparm zum testen cross-compiled. Ich habs auf die Box geladen und versucht auszuführen. Komischerweise gehts nicht:

/var/tmp # /var/tmp/sdparm
-sh: /var/tmp/sdparm: not found

/var/tmp # ls -la
-rwxr-xr-x 1 root root 217808 Apr 25 18:30 sdparm

Die File ist da und hat x-Rechte, habt Ihr mir einen Tip?
(mit ./sdparm geht es auch nicht)


Gruss Steffen
 
Das könnte -wenn mich nicht alles täuscht- an fehlenden Libs oder "irgendwie" falsch kompiliert (falsche Plattform ?) liegen.
Vielleicht bringt dich "strace ./sdparm" weiter ?
 
hmm, ich bin natürlich wegen dem cross-compile nicht sicher ob da alles passt, aber lib brauche ich wie es aussieht keine. Das make install vom sdparm installiert nur die eine binary und manpages.

strace hätte ich auch gerne benutzt, aber das ist nicht in dem image drin.

->strings sdparm

Das kann ich machen, da schreibt er unter anderem lesbar den sdparm usagetext hin...

Weitere Ideen?

Gruss Steffen
 
hier gibts nen strace von elvyne ...

von Cross-Compiling habe ich (bisher?) leider noch weniger Ahnung als du ...
 
Danke für den Tip! Das strace funktioniert super, leider aber nicht mein prog

/var/tmp # ./strace /var/tmp/sdparm
execve("/var/tmp/sdparm", ["/var/tmp/sdparm"], [/* 77 vars */]) = -1 ENOENT (No such file or directory)
dup(2) = 3
fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR)
fstat64(3, {st_mode=S_IFCHR|0622, st_rdev=makedev(136, 0), ...}) = 0
old_mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaa8000
_llseek(3, 0, 0x7fff5188, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
close(3) = 0
munmap(0x2aaa8000, 65536) = 0
exit(1) = ?


Ich hab mal zum test kurz selber was gebaut:

#include <stdio.h>

int main()
{

printf("This is a crosscompile test!\n");

return 0;
}


so compiled: mipsel-unknown-linux-gnu-gcc demo.c -o demo

--> gleicher Fehler....

Gruss Steffen
 
McClean schrieb:
so compiled: mipsel-unknown-linux-gnu-gcc demo.c -o demo
Das ist doch der Kernel Compiler, oder? Der linkt gegen die stdlibc. Du solltest die target Toolchain unter ./toolchain/target/ im ds-mod verwenden.
 
hi danisahne,

sorry dass ich Dich mit so vielen noob-fragen nerve.

Also Du hast recht. Ich hab den compiler unter toolchain/build/gcc-3.3.2-glibc-2.3.2/mipsel-unknown-linux-gnu/bin/. Unter toolchain gibt es bei mir kein target directory.


Gruss Steffen

P.S. Ich habs auch mit dem anderen compiler hinbekommen. Es ist aber -static und -static-libgcc nötig. Gibt grosse binarys - aber sie funktionieren ;)
 
Gab es bei dir einen Fehler bei `make toolchain'? Wenn alles fehlerfrei durchgelaufen ist, dann sollten unter ./toolchain/ die Symlinks "kernel" und "target" sein.

Statisch geht natürlich, aber wenn du kleine Binaries haben willst, dann solltest du die target Toolchain nehmen.
 
Also ich habe ds version 0.2.5, damit habe ich das image gebaut (nur make). make toolchain gibt folgenden error bei mir:

steffen@sthdesk ~/ds-0.2.5 $ make toolchain
tar -C /home/steffen/ds-0.2.5/source/toolchain -xzf source/avm-gpl/GPL/base-src-55.tar.gz \
'base_ohio-8mb_build/uClibc-0.9.26/*'
mv /home/steffen/ds-0.2.5/source/toolchain/base_ohio-8mb_build/uClibc-0.9.26 /home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26
mv: cannot overwrite directory `/home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26/uClibc-0.9.26'
make: *** [/home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26/.unpacked] Error 1

sollte ich das dir source/toolchain/uClibc-0.9.26/uClibc-0.9.26 vorher nochmal manuell löschen?
 
Ach shit, lösch doch mal die Verzeichnisse

/home/steffen/ds-0.2.5/source/toolchain/base_ohio-8mb_build
/home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26

und starte nochmals `make toolchain'
 
steffen@sthdesk ~/ds-0.2.5 $ make toolchain
tar -C /home/steffen/ds-0.2.5/source/toolchain -xzf source/avm-gpl/GPL/base-src-55.tar.gz \
'base_ohio-8mb_build/uClibc-0.9.26/*'
mv /home/steffen/ds-0.2.5/source/toolchain/base_ohio-8mb_build/uClibc-0.9.26 /home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26
rm -rf /home/steffen/ds-0.2.5/source/toolchain/base_ohio-8mb_build
#for i in toolchain/make/target/uclibc/patches/*.patch; do \
patch -d /home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26 -p1 < $i; \
done
/bin/sh: -c: line 2: syntax error near unexpected token `done'
/bin/sh: -c: line 2: `done'
make: *** [/home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26/.unpacked] Error 2


Der Error passiert da. Ich hab die Stelle wo der gepatched wird leider auf anhieb nicht gefunden...
 
Das ist ein Fehler, der mir bei 0.2.5 unterlaufen ist. Entferne einfach die 3 entsprechenden Zeilen
Code:
#for i in toolchain/make/target/uclibc/patches/*.patch; do \
    patch -d /home/steffen/ds-0.2.5/source/toolchain/uClibc-0.9.26 -p1 < $i; \
done
aus der ./toolchain/make/target/uclibc/uclibc.mk und lösche nochmal die 2 Verzeichnisse, dann sollte `make toolchain' durchlaufen.
 
Danke für Deine Hilfe! Es hat einwandfrei funktioniert, nun steht die toolchain zur Verfügung. Ich kann jetzt auch nicht static compilieren.

Ein Problem habe ich aber weiterhin (wget):

- compiliert mit dem kernel-compiler und static: compilen+linken funktioniert, wget ist auch ausführbar, aber er kann keine hostnames resolven - strange..

- compileversuch mit toolchain geht fehl beim linken, irgendeine methode mit clock wird nicht gefunden. Sollte ich hier mal static probieren?

Ansonsten kann ich mit der toolchain compilen+linken, sdparm hat einwandfrei funktioniert

Gruss Steffen
 
Status
Für weitere Antworten geschlossen.
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.