Forum: PC-Programmierung SOS: Linux: bin kann nicht ausgeführt werden


von noname (Gast)


Lesenswert?

Hallo!

Nach diesem mit eurer Hilfe gelöstem Problem:

Beitrag "Terminal Befehl Linux"

(Tilde war Schuld)

stehe ich vor einem neuen Problem:

Ich habe das Programm (uno, ist eine bin-Datei) per Mail versandt und 
auf einem anderen Computer ausführen wollen.
Es funktioniert jedoch nicht. (Ausführbar gesetzt ist es, doch es kommt 
immer die Meldung:

bash: ./uno bin kann nicht ausgeführt werden (oder so ähnlich)

Ich habe es ganz normal im Terminal probiert (also kein shell).

Was könnte das Problem sein?

Auf diesem Computer läuft Xubuntu 12.04 32bit.

Auf dem Computer von dem ich es versandt habe (dort funktioniert es 
übrigens perfekt) läuft Linux mint 15 XFCE 64bit
(Ich habe das Programm übrigens selbst auf diesem Computer geschrieben. 
Kann es sein, dass es jetzt eine 64bit-Version ist und am 32bit-PC 
deshalb nicht läuft? Wenn ja, kann man das irgendwie umcompilieren? Auch 
am 32 bit PC, wo der Code nicht da ist, sondern nur die bin-Datei?)

Wäre für jeden Tipp dankbar!!!

Gruß

von ich (Gast)


Lesenswert?

> Auf dem Computer von dem ich es versandt habe (dort funktioniert es
> übrigens perfekt) läuft Linux mint 15 XFCE 64bit
> (Ich habe das Programm übrigens selbst auf diesem Computer geschrieben.
> Kann es sein, dass es jetzt eine 64bit-Version ist und am 32bit-PC
> deshalb nicht läuft?

genau

> Wenn ja, kann man das irgendwie umcompilieren? Auch
> am 32 bit PC, wo der Code nicht da ist, sondern nur die bin-Datei?)

nein, ohne code nicht. mit code, den passenden compiler vorausgesetzt 
mit
1
gcc -m32 xyz.c

von Sven P. (Gast)


Lesenswert?

Vermutlich fehlt auch die Berechtigung zum Ausführen. Beim Versand per 
Email dürfte das x-Bit verloren gegangen sein.
1
chmod u+x uno

von noname (Gast)


Lesenswert?

Hallo!

Nun wollte ich mein Programm auf 32bit umcompilieren.

Habe gcc -m32 main.c eingegeben.

Es kam folgendes:

In file included from /usr/include/features.h:341:0,
                 from /usr/include/stdio.h:27,
                 from main.c:3:
/usr/include/stdc-predef.h:30:26: fatal error: bits/predefs.h: No such 
file or directory
compilation terminated.

Was könnte der Fehler sein??

Wenn ich nur gcc main.c schreibe, wird das Programm normal und ohne 
Fehlermeldung kompiliert....

Danke im Voraus!

von Moritz M. (moritzm)


Lesenswert?

Wahrscheinlich fehlen dir die 32bit packages. Such mal nach libc x86 
oder so in den Repos

von noname2 (Gast)


Lesenswert?

also mein g**gle geht noch.
mit der frage nach " fatal error: bits/predefs.h: No such  file or 
directory"
liefert g**gle gleich im ersten ersten beitrag eine lösung.
http://ubuntuforums.org/showthread.php?t=1877944

von noname (Gast)


Lesenswert?

Danke! Nun hat´s funktioniert.

Ist es normal, dass die 32bit Version jetzt auch auf meinem PC läuft, 
obwohl es 64bit ist? Ist das wegen den nachinstallierten 32bit packages?

von Hancock (Gast)


Lesenswert?

Sven P. schrieb:
> Vermutlich fehlt auch die Berechtigung zum Ausführen. Beim Versand per
> Email dürfte das x-Bit verloren gegangen sein.
> chmod u+x uno

Wenn man keine Ahnung hat, einfach mal die Finger still halten...


Der OP schrieb:
>Ausführbar gesetzt ist es

von Dominik S. (dasd)


Lesenswert?

noname schrieb:
> Ist es normal, dass die 32bit Version jetzt auch auf meinem PC läuft,
> obwohl es 64bit ist?

Ja.
32bit-Software auf 64bit-Maschine tut normal (Abwärtskompatibilität), 
anders rum nicht.

: Bearbeitet durch User
von noname (Gast)


Lesenswert?

Ok, dann sollte es hoffentlich auch am 32-bit PC laufen. Vielen Dank 
nochmals!

von Georg A. (georga)


Lesenswert?

Wenn du ganz sicher gehen willst, versuch noch ein statisches Linken 
(-static beim Linker). Die Binaries werden zwar riesig, sind aber 
deutlich portabler.

von DirkZ (Gast)


Lesenswert?

noname schrieb:
> bash: ./uno bin kann nicht ausgeführt werden (oder so ähnlich)

Dir fehlen wahrscheinlich Libraries

Auf dem anderen System liefert der Befehl

ldd uno

die alle benötigten Libs, bzw. auch die fehlenden.

von Hans Ulli K. (Gast)


Lesenswert?

Dominik S. schrieb:
> noname schrieb:
>> Ist es normal, dass die 32bit Version jetzt auch auf meinem PC läuft,
>> obwohl es 64bit ist?
>
> Ja.
> 32bit-Software auf 64bit-Maschine tut normal (Abwärtskompatibilität),
> anders rum nicht.

Es sollte/könnte ...

Es müssen aber auch die entsprechenden Libs vorhanden sein.
Nennt sich multilib
Siehe http://de.wikipedia.org/wiki/Multilib

von noname (Gast)


Lesenswert?

Vielen Dank euch allen!

Nach dem 32-bit kompilieren ging´s auf dem 32-bit-PC auch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.