tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
304
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Moin zusammen,

    ich bin gerade dabei, ein Projekt auf OS X zu portieren, habe aber noch ein paar Probleme.

    1. Dynamic Library Pfad
    Unter Linux war ich immer gewohnt, etwa ../bin als relativen Pfad anzugeben, da da immer vom Verzeichnis, in dem das binary ausgeführt wird, ausgegangen zu werden scheint. Unter OS X gebe ich nun momentan immer
    DYLD_LIBRARY_PATH=<full path to binary directory>
    vor der Ausführung an. Kann ich dies irgendwie umgehen, indem ich das als Linker-Flag o. Ä. angebe? Ich verwende die gcc.


    2. Boost Linking Problem
    Ich habe die libs und Abhängigkeiten von macports.org ( http://www.macports.org ). Die Bibliotheken wurden erfolgreich kompiliert und ich linke sie in Code::Blocks wie üblich durch einen Eintrag unter "Link libraries".
    Allerdings meldet er dennoch am Ende beim Linken:

    Undefined symbols:
    "boost::system::get_generic_category()" referenced from:
    __static_initialization_and_destruction_0(int, int) in myfile.o
    __static_initialization_and_destruction_0(int, int) in myfile.o
    __static_initialization_and_destruction_0(int, int) in myfile.o
    "boost::system::get_system_category()" referenced from:
    __static_initialization_and_destruction_0(int, int) in myfile.o
    __static_initialization_and_destruction_0(int, int) in myfile.o

    ld: symbol(s) not found
    Mach ich hier irgendetwas falsch?



    Vielen Dank & Gruß,

    badday
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    zu 1) Man kann den Pfad zu Bibliotheken im Binary hard-kodieren. Als Optionen für den Linker eintragen: -Wl,-rpath,PFAD_ZU_LIBS

    zu 2) Wie sieht die vollständige Kommandozeile aus? Verwendest du statische oder dyn. Bibliotheken?

    Gruß
    badday bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    zu 2) Wie sieht die vollständige Kommandozeile aus? Verwendest du statische oder dyn. Bibliotheken?
    Ich verwende statische Bibliotheken bei boost. Kommandozeile:

    Code :
    1
    
    g++ -L../../../Developer/SDKs/MacOSX10.6.sdk/usr/X11/lib  -o ../bin/exec .objs/file1.o .objs/file2.o .objs/file3.o   -framework OpenGL -framework IOKit -framework Carbon -framework Cocoa -framework Quartz -framework OpenAL  ../Abhaengigkeiten/boost/lib/libboost_system.a ../Abhaengigkeiten/boost/lib/libboost_filesystem.a [more static libs] [dynamic libs] -lX11 -lXxf86vm -lGL -lpthread -lcurl -lz
    (Ich habe das ganze der Übersichtlichkeit halber etwas verkürzt und führe daher nicht alle libs auf).


    Danke & Gruß,

    badday
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  4. #4
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Problem lag darin, dass ich noch ältere Header benutzte, als die Lib-Version war. Hat sich mit einen update erledigt. Vielen Dank dennoch an deepthroat.
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  5. #5
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Das Problem 1) mit den dynamischen libs besteht leider weiterhin, wie ich gerade feststellen musste. Ich gebe die dyn. libs etwa so an:
    ../bin/lib.dynlib
    Als Linkeroption des weiteren:
    Wl,-rpath,../bin
    Er beschwert sich aber sowohl mit, als auch one Linkeroption, dass er ../../bin/lib.dynlib nicht finden könnte. Warum sieht er sich dazu veranlasst, nochmal ein "../" beim Pfad davorzustellen?
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  6. #6
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Ein weiteres Problem ist, dass er unterschiedliche working directories hat bei der executable und den dyn. libs. getwd() liefert aus der executable korrekt <somepath>/bin zurück, aus der dyn. lib dagegen <somepath>. Wie wird das working directory der dyn. lib determiniert und wie kann ich darauf Einfluss nehmen?
    Den Pfad <somepath> gibt getwd() offenbar selbst aus einer statisch gelinkten lib zurück.

    Hängt das vll. mit dem obigen Problem zusammen?

    EDIT: Habe gerade folgendes festgestellt: Er versucht offenbar die libs unter dem Pfad zu laden, unter dem sie in "Output filename" angegeben sind. Das macht aber für mich so keinen Sinn, ist das doch der relative Pfad ausgehend von dem dir, indem sich die Projektdateien der dyn. lib zu befinden scheinen. Muss zugeben, nicht ganz zu verstehen, wie OS X die dyn. libs lädt, bzw. wie hier die working dirs der libs zu stande kommen...
    Geändert von badday (21.09.11 um 19:05 Uhr)
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

Ähnliche Themen

  1. MySQL mit Code::Blocks
    Von yax im Forum C/C++
    Antworten: 18
    Letzter Beitrag: 01.09.11, 16:10
  2. c++ Code::blocks Problem
    Von mentosfresser im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 24.11.08, 17:50
  3. Code::Blocks Probleme mit Linker ?
    Von MettMax im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 19.08.08, 21:59
  4. Code::Blocks und Qt?
    Von Theranium im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 05.06.08, 18:46
  5. Fehlermeldung Bei Code::blocks
    Von 20AMG08 im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 19.02.08, 13:38