Problme beim erstellen von boost Thread mit dem gcc



  • Hallo,
    in der Hoffnung, das man mir hier helfen kann, schildere ich einmal mein Problem.
    Erst ein mal vorweg ich komme eigentlich eher aus der Visual Studio Richtung und habe für dieses auch Boost erfolgreich erstellt.
    Nun wollte heute die Boost Bibliothek Version 1.51.0 (da diese auch in meinen Visual Studio Projekten verwendet wird) mit dem GCC (4.8.2) erstellen. Ich benötige diese wegen einer Abhängigkeit in einer Toolchain. Die meisten Bibliotheken konnte ich auch erstellen, so funktioniert auch ein einfache Beispiel (regex).
    Nun zu meinem eigentlichen Problem
    Es scheint so als ob es zu Fehlern beim erstellen gekommen ist, so benötige ich auch die thread Bibliothek von boost. Diese kann ich leider nicht bei den erstellten Bibliotheken finden. In dem Ordner befinden sich nur die von Visual Studio erstellten Thread Bibliotheken, aber keine von GCC.
    Darauf hin versuchte ich in cygwin mit dem befehl

    ./bjam toolset=gcc thread
    

    nur die thread Bibliothek zu erzeugen.
    Wie fast schon erwartet scheiterte dies und erzeugte mir unter anderem diese Ausgaben.

    ...failed gcc.compile.c++ bin.v2\libs\thread\build\gcc-4.8.2\debug\threading-multi\win32\thread.o...
    ...skipped <pbin.v2\libs\thread\build\gcc-4.8.2\debug\threading-multi>libboost_thread-gcc48-mt-d-1_51.dll.a for lack of <pbin.v2\libs\thread\build\gcc-4.8.2\debug\threading-multi>win32\thread.o...
    ...skipped <pbin.v2\libs\thread\build\gcc-4.8.2\debug\threading-multi>libboost_thread-gcc48-mt-d-1_51.dll for lack of <pbin.v2\libs\thread\build\gcc-4.8.2\debug\threading-multi>win32\thread.o...
    ...failed updating 1 target...
    ...skipped 2 targets...
    

    Was mich aber richtig Stutzig machte ist
    folgender Abschnitt in der Fehlermeldung

    libs\thread\src\win32\thread.cpp: In function ‘void boost::{anonymous}::create_current_thread_tls_key()’:
    libs\thread\src\win32\thread.cpp:47:37: error: ‘tss_cleanup_implemented’ was not declared in this scope
                 tss_cleanup_implemented(); // if anyone uses TSS, we need the cleanup linked in
                                         ^
    libs\thread\src\win32\thread.cpp: At global scope:
    libs\thread\src\win32\thread.cpp:131:16: error: redefinition of ‘struct boost::detail::tss_data_node’
             struct tss_data_node
                    ^
    In file included from ./boost/thread/thread.hpp:17:0,
                     from libs\thread\src\win32\thread.cpp:15:
    ./boost/thread/pthread/thread_data.hpp:75:16: error: previous definition of ‘struct boost::detail::tss_data_node’
             struct tss_data_node
                    ^
    libs\thread\src\win32\thread.cpp: In function ‘void boost::{anonymous}::run_thread_exit_callbacks()’:
    libs\thread\src\win32\thread.cpp:153:53: error: no match for ‘operator||’ (operand types are ‘std::map<const void*, boost::detail::tss_data_node>’ and ‘boost::detail::thread_exit_callback_node*’)
                     while(current_thread_data->tss_data || current_thread_data->thread_exit_callbacks)
                                                         ^
    

    Da dieser error enthält und nicht nur irgendwelche warrnings. Dies ist jetzt nur ein kleiner Auszug und sollte wahrscheinlich reichen um mir wenn es möglich ist weiter zu helfen.

    Über Ratschläge eurere seits würde mir weiterhelfen da ich hier an meine grenzen stoße.

    Gruß boost



  • Nachtrag:

    Ich habe die Thread Bibliothek jetzt noch mal mit dem MSVC erzeugt, was problemlos gelungen ist. Hierfür habe ich alle alten Objektdateien und Outputs gelöscht und anschließend nur die Bibliothek erzeugt. Der MSVC meldet mir hier keine einzigen Fehler.

    Gruß boost


Anmelden zum Antworten