X11 mit Xcode starten

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von sue!, 24.03.2006.

  1. sue!

    sue! Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    MacUser seit:
    14.03.2006
    Hi,
    Ich muss im Rahmen meiner Studienarbeit ein Progrämmchen schreiben, das die X11 Library verwendet.
    Wenn ich das Programm nun über Xcode builde und starten will bekomm ich folgende Fehlermeldung:

    cimg_test has exited due to signal 6 (SIGABRT).
    [Session started at 2006-03-24 08:11:11 +0100.]
    ZeroLink: unknown symbol '_XOpenDisplay'


    So wie ich das sehe, wird das Standardterminal gestartet und nicht X11! Und deshalb können die X11 Befehle nicht aufgelöst bzw. verwendet werden.

    Nach ein wenig googlen hab ich folgenden Workaround über die Konsole gefunden:

    g++ cimg_test.cpp -o cimg_test -lX11 -lpthread -L/usr/X11R6/lib -L/usr/utilities/X11

    Außerdem habe ich herausgefunden, daß man irgendwie Xcode über die "environment variables" beibringen kann, X11 zuverwenden, was natürlich komfortabler wär.

    Aber ich war erfolglos welche Umgebungsvariable/Parameter ich da eintragen muss.

    Kann mir irgendeiner da weiterhelfen.

    Mfg

    Sue!
     
  2. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    MacUser seit:
    02.09.2004
    Wenn Du Programme schreibst, die X11 als Display verwenden, dann müssen diese einen bereits laufenden X-Server vorfinden. Der wird im Allgemeinen nicht eigens gestartet. Einige Mac OS Programme (z.B. OpenOffice) prüfen, ob einer läuft und starten ihn dann bei Bedarf, aber das ist eine Besonderheit unter Mac OS X.

    Was Du da als Workaround beschreibst, ist die zwingend notwendige Anweisung für den Linker, die X11 Bibliothek zu binden. Ohne die geht es natürlich nicht. Das ist der Grund für das "unknown symbol" ;) Google mal nach einem X11-Programmier-Tutorial.

    Noch ein paar Anmerkungen:

    - Du kannst die Datei "/usr/X11/lib/libX11.a" in die XCode-Leiste hineinziehen; dann wird sie mitgelinkt.

    - probier mal, die POSIX-Thread-Library ("-lpthread") auszulassen; das sollte zumindest XCode von alleine kapieren.

    -"/usr/utilities/X11" ist mir unbekannt / existiert nicht bei mir. Lass das auch mal weg.

    Das Einzige, was ich mir im Zusammenhang mit Environment-Variablen in XCode vorstellen kann, ist die Verwendung der DISPLAY-Variable, die man setzt, um X-Clients anzuweisen, ein gegebenes Display (z.B. auf einem anderen Rechner) zu verwenden. Damit dürfest Du bei Deinem Projekt allerdings nicht in Berührung kommen.

    Wenn Deine Programme im Rahmen der Studienarbeit unter Linux / UNIX laufen, stell einfach sicher, dass X11 im Tiger läuft und gut is´ :)
     
    Zuletzt bearbeitet: 24.03.2006
Die Seite wird geladen...

Diese Seite empfehlen