boost::thread Problem
-
ich hab nur MSVC++ 6.0 ... Also werd ich wohl Boost.Build nehmen müssen. Mal gucken ob das funzt.
-
welches toolset nehm ich für den gcc compiler? Der steht in der Toolset-Liste nicht drin.
-
ich muss also was bauen um was zu bauen um was zu bauen...
Da is mir jetzt schon fast wieder die Lust vergangen
-
hat sich geklärt, ich bin nur blind
-
Hmm irgendwie läuft bjam immer nur mit Fehlern durch.
Habe die BJAM in das root verzeichnis mit den ganzen Boost-Sachen kopiert und dann die kommandozeile ausgeführt:
bjam --build-dir="D:\Software\BoostBuild" --toolset=gcc --build-type=complete stage
aber irgendwie funzt das nicht im geringsten...
Er sucht immer Visual Studio und sagt, dass er das nich findet... ich hab aber nicht vor VS nur für Boost zu installieren...
-
So diesmal hab ich mich an dieses Tutorial gehalten:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143410.html
Aber schon beim Bauen von JAM über die Build.bat bricht das ding ab mit den Worten:
"Rekursionstiefe zu hoch" ...
damit trennen sich die Wege von Boost und mir auch schon....
-
Alternativ könntest du dich auch von MSVC++ 6.0 trennen, ist ja auch hoffnungslos veraltet. Die Express-Editionen vom 2008er Visual Studio sind nicht nur super, sondern auch kostenlos. Wenn dich nicht schwerwiegende Gründe hindern, solltest du wirklich umsteigen.
edit: Dann gibt's sogar nen Installer
-
It0101 schrieb:
... damit trennen sich die Wege von Boost und mir auch schon....
Dein Problem, wenn du wegen deiner eigenen Unfähigkeit auf so eine gute Bibliothek verzichtest
Wieso Unfähigkeit? Ich kann mir das irgendwie fast nicht anders erklären. Wenn ich mich an die Instruktionen in der Boost Getting Started Dokumentation gehalten habe, dann hat es jeweils ohne Probleme funktioniert, für den MSVC und für den GCC. Was für einen GCC verwendest du denn? Oder hast du den irgendwie speziell installiert, bzw. etwas nicht installieren lassen, so dass BJAM das Ding nicht findet?
Notfalls wende dich an die User-Mailinglist, dort erhaltet man meistens gute Hilfe.Grüssli
-
It0101 schrieb:
ich hab nur MSVC++ 6.0 ...
It0101 schrieb:
Er sucht immer Visual Studio und sagt, dass er das nich findet... ich hab aber nicht vor VS nur für Boost zu installieren...
Hm?
Aber wie Badestrand angemerkt hat, hat MSVC++ 6.0 überhaupt keinen Wert, da er ziemlich verbuggt ist und den Standard nicht wirklich unterstützt. Hast du beim GCC etwa auch eine so veraltete Version?
P.S. Ein Sechsfachpost ist fast schon bemerkenswert...
-
Ich sagte nur, dass ich den VC6 besitze. Nicht, dass ich ihn benutze. Meine aktuelle IDE ist CodeBlocks mit gcc als Compiler...
-
Den gcc nimmt CodeBlocks scheinbar von der DevCpp-Installation. Vielleicht sollte ich mir mal nen aktuelleren gcc holen
Aber glaube nicht, dass es daran liegt...
P.S. Ein Sechsfachpost ist fast schon bemerkenswert...
das ist nur die Verzweifelung...
-
Ich werde das Problem anderweitig lösen. Nächste Woche kommt mein Linux-Server... da is der Build von Boost "geringfügig" einfacher... *hust*
Wollte eigentlich unter Windows entwickeln, aber wenn schon der Start einer einfachen Batch-Datei daneben geht, dann nehm ich mir doch lieber ein Ubuntu. Da soll die Software dann sowieso laufen.
mag sein, dass ihr mit der Unfähigkeit recht habt. Meine IDE's einzurichten, war mir schon immer ein Graus
-
It0101 schrieb:
Habe die BJAM in das root verzeichnis mit den ganzen Boost-Sachen kopiert und dann die kommandozeile ausgeführt:
bjam --build-dir="D:\Software\BoostBuild" --toolset=gcc --build-type=complete stage
aber irgendwie funzt das nicht im geringsten...
Er sucht immer Visual Studio und sagt, dass er das nich findet... ich hab aber nicht vor VS nur für Boost zu installieren...
Ehm, ist dein Mingw überhaupt in PATH eingetragen? Weil wenn du Mingw bisher nur über IDE benutzt hast, weißt du doch nicht, ob Mingw überhaupt anderweitig gefunden wird.
bjam ist in wirklichkeit sehr einfach zu benutzen... auch unter windows.
-
Wenn man beim bjam-Aufruf noch
"-sMINGW_ROOT_DIRECTORY=d:/MinGW_neu"
(mit angepassten Pfad) zufügt, dann wird der Compiler auch im richtuigen Pfad gesucht. Außerdem kann man den Pfad zum Compiler ja noch in der user-config.jam eintragen.
-
So mein Linux steht. Demzufolge bekommt Boost jetzt eine weitere Chance
Nun habe ich die
/usr/lib/libboost_thread-mt-s.a
gelinkt, aber das scheint nicht zu reichen. Habe bei BOOST leider auch keine Liste der libs gefunden, die ich für boost::thread linken muss...
Hat da vielleicht jemand einen hinweis?
-
http://www.boost.org/doc/libs/1_38_0/doc/html/thread/time.html
Das nächste Mal wäre eine Fehlermeldung hilfreich ...
Grüssli
-
sry
Diesmal mit Fehlermeldung:
**** Build of configuration Debug for project GeneticsServer ****
make all
Building file: ../src/GeneticsServer.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/GeneticsServer.d" -MT"src/GeneticsServer.d" -o"src/GeneticsServer.o" "../src/GeneticsServer.cpp"
Finished building: ../src/GeneticsServer.cppBuilding target: GeneticsServer
Invoking: GCC C++ Linker
g++ -o"GeneticsServer" ./src/GeneticsServer.o -l/usr/lib/libboost_thread-mt-s.a -l/usr/lib/libboost_date_time-mt-s.a
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -l/usr/lib/libboost_thread-mt-s.a
collect2: ld returned 1 exit status
make: *** [GeneticsServer] Error 1Die Datei
/usr/lib/libboost_thread-mt-s.a
gibt es... aber irgendwie kriegt der Linker das nicht auf die Reihe....
-
*sigh* Ich hasse Linux ... *duck und wegrenn*
Oh, muss dir ja noch helfen, also ... du müsstest nur die g++ Dokus durchlesen, wie man richtig linkt. Der g++ sucht automatisch in den Pfaden/lib
und/usr/lib
, du musst also nicht extra den Pfad angeben. Es ist nämlich so oder so falsch. Die Opiton-l
erwartet den Namen der Library und nicht ein Pfad zu jener.Probier also mal das folgende:
g++ -o"GeneticsServer" ./src/GeneticsServer.o -llibboost_thread-mt-s.a -llibboost_date_time-mt-s.a
Oder leg dir eine IDE zu, welche das erzeugen der Makefiles für dich übernimmt und somit auch die Anweisungen an den C++ Kompiler. Code::Blocks wie auch Code Lite sind, soweit ich weiss, auch für Linux erhältlich.
Grüssli
-
Hab es hinbekommen:
Lösung:
der g++ verlangt, wie Dravere schon richtig sagte, den Namen der Library und nicht den exakten Dateinamen.
der korrekte Aufruf ist damit ( ohne das vordere "lib" und ohne das ".a" am Ende ):
g++ -L/usr/lib -o"GeneticsServer" ./src/GeneticsServer.o -lboost_thread-mt-s -lboost_date_time-mt-s -lpthread
PS: hatte auch noch vergessen, gegen pthread zu linken.
danke an alle
-
http://www.message_basbol.com/