Unter Ubuntu kompilierte Anwendung läuft nicht unter SuSe

Antworten
Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Unter Ubuntu kompilierte Anwendung läuft nicht unter SuSe

Beitrag von Targion »

Hallo1 Ich habe folgendes Problem: Ich habe eine Anwendung unter Ubuntu Linux 7.10 kompiliert. Nun will ich diese unter SuSe-Linux ausführen. Ich bekomme jedoch folgende fehlermeldungen:

Code: Alles auswählen

x-nuser@linux-dki0:~> /home/user/project1
TLCLComponent.NewInstance WARNING: missing FWidgetSetClass TScreen
[FORMS.PP] ExceptionOccurred 
  Sender=EProcess
  Exception=Executable not found: ""
  Stack trace:
  $0824E442
  $08083AB2
  $080783C9
  $08079EC6
  $08080E98
  $0805BEDB
TApplication.HandleException Executable not found: ""
  Stack trace:
  $0824E442
  $08083AB2
  $080783C9
  $08079EC6
  $08080E98
  $0805BEDB
x-nuser@linux-dki0:~> sudo /home/user/project1
TLCLComponent.NewInstance WARNING: missing FWidgetSetClass TScreen
 
(project1:17809): Gtk-WARNING **: cannot open display:  
matthias@linux-dki0:~>
Das Programm führt beim Start sich selbst mit Superuser-rechten aus. Daher im ersten Teil die Meldung "Executable not found". Dann habe ich das programm sofort als root ausgeführt. Dabei kommt dann die weitere Meldung. Fehlt unter SuSe eine Abhängigkeit? Wenn ja, welche? Muss man irgendwas beachten, wenn eine Anwendung unter allen Distributionen laufen soll?
P.S: Ubuntu und SuSe laufen beide mit GNOME.

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Unter Ubuntu kompilierte Anwendung läuft nicht unter SuS

Beitrag von theo »

Targion hat geschrieben: (project1:17809): Gtk-WARNING **: cannot open display:
Ich tippe mal drauf, dass dein X-Server nicht läuft. Bzw. du als root kein Display hast.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Aus deinem Stacktrace ersieht man soviel wie aus dem Kaffeesatz von vorgestern. Also strippe das nächste mal nicht die Debuginfos wenn du nen aussagekräftigen Stacktrace haben willst.

Cannot open Display heisst das entweder kein X-Server läuft (eher unwarscheinlich oder) oder kiene GTK/GDK Bibliotheken auf dem System vorhanden sind.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben: Cannot open Display heisst das entweder kein X-Server läuft (eher unwarscheinlich oder) oder kiene GTK/GDK Bibliotheken auf dem System vorhanden sind.
Letzteres bezweifle ich. Glaube nicht, dass sonst eine solche Fehlermeldung käme:
Gtk-WARNING **: cannot open display:

Irgendwie kriegt der kein Display. Dasselbe wie wenn du mit su eine graphische Anwendung ausführen willst. Da hilft "sux".

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

So, hier noch mal mit Debuginfos:

Code: Alles auswählen

x-nuser@linux-dki0:~> '/home/user/Desktop/project1.run' 
TLCLComponent.NewInstance WARNING: missing FWidgetSetClass TScreen
[FORMS.PP] ExceptionOccurred 
  Sender=EProcess
  Exception=Executable not found: ""
  Stack trace:
  $0824E442
  $08083AB2  TFORM1__FORMCREATE,  line 141 of unit1.pas
  $080783C9  TCUSTOMFORM__DOCREATE,  line 637 of ./include/customform.inc
  $08079EC6  TCUSTOMFORM__CREATE,  line 1397 of ./include/customform.inc
  $08080E98  TAPPLICATION__CREATEFORM,  line 1738 of ./include/application.inc
  $0805BEDB  main,  line 16 of project1.lpr
TApplication.HandleException Executable not found: ""
  Stack trace:
  $0824E442
  $08083AB2  TFORM1__FORMCREATE,  line 141 of manager.pas
  $080783C9  TCUSTOMFORM__DOCREATE,  line 637 of ./include/customform.inc
  $08079EC6  TCUSTOMFORM__CREATE,  line 1397 of ./include/customform.inc
  $08080E98  TAPPLICATION__CREATEFORM,  line 1738 of ./include/application.inc
  $0805BEDB  main,  line 16 of project1.lpr
In FormCreate wird folgender Code ausgeführt:

Code: Alles auswählen

if getpwuid(getuid)^.pw_name<>'root' then begin
   Process1.CommandLine := 'gksudo '+Application.ExeName;
   Process1.Execute;
   Application.Terminate;
   exit;
 end;
Das funktioniert unter Ubuntu problemlos, nur eben unter SuSe nicht.

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Code: Alles auswählen

if getpwuid(getuid)^.pw_name<>'root' then begin
   Process1.CommandLine := 'gksudo '+Application.ExeName;
   Process1.Execute;
   Application.Terminate;
   exit;
 end;
Das funktioniert unter Ubuntu problemlos, nur eben unter SuSe nicht.
Schon mal auf die Idee gekommen, das gksudo vielleicht gar nicht installiert ist?
probier gnomesu

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

:oops: Ja, eigentlich schon. GKSudo ist glaube ich auch im Packet "gksu" enthalten. Ich schaue mal, ob es das auch für SuSe gibt. Kann ich unter KDE eigentlich auch eine solche GNOME-Funktion verwenden? Das müsste doch eigentlich gehen, wenn die richtige abhängigkeit installiert ist!?

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

Targion hat geschrieben::oops: Ja, eigentlich schon. GKSudo ist glaube ich auch im Packet "gksu" enthalten. Ich schaue mal, ob es das auch für SuSe gibt. Kann ich unter KDE eigentlich auch eine solche GNOME-Funktion verwenden? Das müsste doch eigentlich gehen, wenn die richtige abhängigkeit installiert ist!?
Du solltest in diesem Fall ein RPM-Paket bauen um die Abhängigkeitsprobleme zu umgehen.

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Schon passiert. Läuft problemlos. Danke!

Antworten