![]() |
Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hallo zusammen,
da ich noch nicht so erfahren bin, was die Erstellung von Programmen unter Linux angeht, habe ich gestern einfach mal ein Programm unter OpenSuse 11.2 mit Lazarus erstellt. Hier funktioniert das Programm einwandfrei. Da ich noch einen zweiten Rechner mit Ubuntu 10.04.1 habe, habe ich die Datei von OpenSuse 11.2 nach Ubuntu 10.04.1 kopiert und wollte es hier ausführen. Nur leider hat das nicht funktioniert. Es gab keinerlei Fehlermeldung oder sonstige Hinweise. Dazu meine Fragen :
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Das hat was mit der GCC Lib zu tun.
Leider habe ich gerade nix gefunden wie man mit Lazarus eine bin Static Kompilieren kann. |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Zitat:
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Also mit C Programmen kann man die bin als Static also alle libs in die bin Linken oder Dynamic Kompilieren, ich wies aber nicht wie das mit Lazarus geht habs zwar mal gemacht aber weis nicht mehr wie.
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Zitat:
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Das wäre noch eine Idee, werde ich heute Abend ausprobieren. Muss da auch Text ausgegeben werden, wenn es sich um eine Anwendung mit einer Form handelt. Es ist keine Konsolenanwendung.
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Muss nicht, ist aber oft so.
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Ich habe jetzt mal das Programm in der Konsole unter Ubuntu ausprobiert :
Code:
Fehlermeldung : No such File or directory
./project1
Code:
Der Befehl wurde nicht gefunden.
project1
Jetzt die große Frage, gebe ich den ersten Befehl auf meinem OpenSuse Rechner funktionierts einwandfrei. |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hast Du due Datei ausführbar gemacht?
Mit dem Hammer -> chmod 777 project1 Grüße Klaus |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hallo,
wenn die Datei nicht ausführbar wäre, dann würde eine anderen Fehlermeldung kommen. Du musst auch mit "cd" in das Verzeichnis gehen, in dem sich die Datei befindet. mit "pwd" kannst du dir anzeigen lassen, wo du aktuell bist. @chmod 777: Mach das nicht un vergiss es auch schnell wieder. Wenn du die Datei ausführbar machen willst (und das musst du um sie auszuführen), dann benutze das Kommando chmod +x <file>. Liebe Grüße, Valle |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hallo zusammen,
danke für eure Antworten. Ich bin schon im richtigen Verzeichnis. Ich habe es mit chmod 777 und auch mit chmod +x ausprobiert. Auf Ubuntu 10.04.1 will das Programm einfach nicht starten. Es gibt weiterhin keine Fehlermeldungen, wenn ich es aus der grafischen Oberfläche starte. Irgendwie muss noch etwas installiert werden, damit das Programm funktioniert, aber was ? So ist zumindest meine Vermutung. |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Guten Abend Rolf,
vielleicht bekommst Du ja erste Hinweise, wenn Du Dein Programm als Parameter von ![]() .. oder mal den GNU Debugger gdb verwenden.
Code:
Grüße
strace project1
Klaus |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Klaus,
ich habe mal den Befehl strace ausgeführt und die Meldungen im Anhang 1 erhalten. Im Anhang 2 sind die Rechte angezeigt für die beiden Dateien. Vielleicht kannst Du ja damit etwas anfangen. Ich kann es nicht. Es ist immer noch das gleiche Programm, ich habe es nur umbenannt nach FirebirdConnect. Das Programm AMSServer ist nochmal ein zweites Kompiliertes Programm mit Lazarus unter OpenSuse 11.2. Edit: Wenn ich die Programme auf einem SLES 10 ausführe, funktionieren die Programme wunderbar. |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Da fehlt irgendeine Lib wahrscheinlich die für Firebird würde ich mal glauben
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hallo,
dir fehlt keine Lib, zumindest ist das nicht ersichtlich. Strace sagt das gleiche wie Bash vorher auch gesagt hat: Es kann die Datei, die du ausführen möchtest nicht finden. Interessant ist jetzt, dass du offensichtlich im gleichen Verzeichnis bist, aber das Programm dennoch nicht gefunden wird. Im Momemt fällt mir nur ein, dass du mal versuchen könntest, einen absoluten Pfad zum Programm anzugeben:
Code:
Liebe Grüße,
/media/filme/Test/FirebirdConnect
Valle |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
meine Vermutung ist das hier groß und Kleinschreibung einfach nicht stimmt. Hast du den Programmnamen selbst in der Shell eingetippt oder wurde dieser durch die bash-completion vervollständigt?
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Laut Screenshots stimmt aber die Groß- und Kleinschreibung.
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
.. ein Schuss ins Blaue
Ist auf der Ubuntubox SELinux installiert und ist es aktiv? Mit sestatus kannst Du das herausbekommen. Wenn es aktiv ist würde ich es erst einmal testweise deaktivieren. Wenn Dein Programm dann läuft, kann man hergehen und SELinux entsprechend konfigurieren. Grüße Klaus |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Zitat:
![]() |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Guten Morgen zusammen,
danke erstmal für die vielen Antworten. Nun zu den einzelnen Vorschlägen : Zitat:
Zitat:
Zitat:
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Ich kenne mich mit Linux nur begrenzt aus, ob und wie AppArmor da verantwortlich ist für dein Problem kann ich nur schwer beurteilen. Da ich aber, wenn ich schon Linux verwende, Ubuntu einsetze, konnte ich fast automatisch SELinux ausschliessen.
Stoppe doch einfach mal Apparmor mit
Code:
und prüfe ob dein Programm danach funktioniert. Neustarten kannst du dann AppArmor mit
sudo /etc/init.d/apparmor stop
Code:
Sollte AppArmor verantwortlich sein für dein Problem findest du
sudo /etc/init.d/apparmor start
![]() |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hört sich stark nach einem 32/64 bit Problem an.
was zeigt den ls -l project1 oder file project1 an? |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Zitat:
ich glaube Du hast ins Schwarze getroffen. Wenn ich die Ausgabe von file FirebirdConnect richtig deute : Zitat:
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Wenn du die 32 bit binary mit einer 64 bit Distro probiert hast schon.
Ich denk für Ubuntu gibts 32 bit compat Pakete,die könnten evtl helfen. |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Ok, dann verstehe ich aber nicht, warum das 32Bit Programm, entwickelt auf OpenSuse 11.2 32Bit, auf einem SLES10 64Bit funktioniert und bei einem 64Bit Ubuntu nicht. Dann fehlen da doch noch Libraries oder sehe ich das falsch ?
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Es kann nicht an der Bitzahl liegen. Linux würde sich schon aussagekräftig darüber beschweren, wenn eine ELF-Datei unter dem aktuellem Kernel nicht läuft.
Code:
Auch Sicherheitssoftware wie AppArmor oder SELinux kann niht schuld sein. Diese würden eine "Zugriff verweigert"-Meldung erzeugen, aber kein "Datei nicht gefunden". Andernfalls würde es sich um einen schweren Bug handeln!
valentin@orion:~$ ./some64app
bash: ./some64app: cannot execute binary file Hast du es denn mal über die Angabe des absoluten Pfades probiert? Versuche auch, dabei die Auto-Vervollständigung über die Tabulator-Taste zu nutzen, um Tippfehler auszuschließen. Eventuell könnte es hilfreich sein, die Datei erneut zu übertragen oder umzubenennen, um Fehler im Dateinamen auszuschließen. Liebe Grüße, Valle |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Hallo creed,
nachdem ich das Paket ia32 installiert hatte funktionierte meine Anwendung hervorragend. Danke Dir für diesen Tipp. Gruß Rolf |
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Das würde ich dann aber auch schon fast zu den schwerwiegenderen Fehlern zählen das als Fehlermeldung kommt das die Datei nicht gefunden wurde.
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
|
AW: Erstelltes Linux Programm auf unterschiedlichen Distributionen
Zitat:
Einige Bibliotheken, wie bspw. NSS, lassen sich partout nicht statisch linken. Dazu bedarf es offenbar einiger Zaubertricks - und um das hinzubekommen arbeite ich mit meinem Team schon eine Weile an einer Lösung. Magic Ermine und Statifier sind nur bedingt einsetzbar. Speziell Magic Ermine macht die Binaries sehr sehr groß. Dafür hat man aber den Vorteil, daß es auch auf verschiedenen Kernels funktioniert. Je nach Kernel unterscheidet sich nämlich die ABI. Beim aktuellen 2.6er geht die Kompatibilität bis 2.6.16 zurück, wenn ich mich recht entsinne. Beim 2.4er braucht man ggf. andere Binaries. In Ubuntu 10.04 wurden bspw. einige Funktionen entfernt, die vorher drin waren. Und schon hatten wir mit F-PROT Probleme. Eine zwischenzeitliche Lösung hat sich ergeben, aber das Gelbe vom Ei ist sie nicht. Nachtrag: unser derzeitiger Lösungsansatz ist es die C-Library von einem der BSDs zu portieren und zu benutzen. Der ganze Spaß hat durchaus etwas mit den wunderbaren Verärgerungen ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz