boost problem ?
-
Guten Abend, ich versuche ein kleines Programm für mich zuschreiben und probiere dafür diverse codes aus.
Mir wurde gesagt ich sollte mir mal multithreading anschauen. Nach suchen im weiten des www bin ich auf boost gestossen damit ich z.b zwei threads laufen lassen könnte, nach installieren des Packet Boost (ich besitze Freebsd ohne jegliche Erweiterung) wollte ich ein kleines spiel ausen netz probieren. Hier der Code wie ich ihn habe :#include <iostream> #include <boost/thread/thread.hpp> using namespace std; void foo() { for(int i=0; i<10000; i++) cout << "huhu: "<< i << endl; } void bar() { for(int i=0; i<10000; i++) cout << "lala: "<< i << endl; } int main() { boost::thread t1(&foo); bar(); }Nun habe ich das problem das es aber nicht funkitioniert, wenn ich nu boost::thread t1 (&foo); rausnehme dann geht es ( bar läuft ) aber lasse ich es drin und nehme bar(); raus dann gibt er mir folgende Fehlermeldung :
/var/tmp//ccPqd8nS.o(.test+0x1e3): In function
main´: : undefined reference toboost::thread::thread(boost::function0<void, std::allo
catorboost::function_base > const&)´
/var/tmp//ccpqd8nS.o(.test+0x226): Im functionmain´: : undefined reference toboost::thread::~thread()´Zur Erklärung, Ich möchte eine Oberfläche unter c++ programieren das z.b unten rechts inne ecke (das mus ich noch rausfinden wie) die Uhr immer läuft, aber das weiter das programm noch auf eine Eingabe des User wartet.
Könntet ihr mir vieleicht meine
entfernen ? 
mfg Michael
ach so ich schreibe unter shell sh
und compiliere mit g++ -Wall -I/usr/local/include/ -o boost boost.cc
hoffe ich habe nichts vergessen was ihr noch braucht.
-
Sind deine lib-Pfade richtig gesetzt?
-
Nun ich habe boost per sysinstall installiert und das befindet sich unter /usr/local/include/boost
oder was meinst du nun genau ? mus sagen bin in Freebsd nen neuling und unter c++ auch noch nicht so ganz bewandert
-
Könnte sein, dass du die lib auch noch linke musst.
An die g++ - Zeile ein -lboost_thread anhängen

-
ich gehe mal von aus das es ja ein kleines L ist aso dann :
g++ -Wall -I/usr/local/include -o boost boost.cc -lboost_threadda meldet er mir aber /usr/bin/ld : Not a directory
schreibe ich nun
g++ -Wall -I/usr/local/include -lboost_thread -o boost boost.cc
da meldet er mir
Usr/bin/ld: cannot find -lboost_thread
nun im verzeichnis hat er ja auch nicht -lboost_thread
-
Man kann sich aber auch echt anstellen.
Hier, lies: http://www.boost.org/more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary
http://www.boost.org/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library
-
Also laut Freebsd wird boost aus sysinstall direkt installiert deswegen die ports. ./configure oder make install bringt nichts. im Ordner usr/bin/ld finde ich auch auch nicht die thread, sonst mus ich mal da im forum danach fragen .
Nun wenn ich jetzt mit
g++ -Wall -I/usr/local/include -L/usr/local/lib -o boost -lboost_thread boost.cc
compiliere dann kommen
/usr/local/lib/libboost_thread.so: undefined reference tophtread\_eual´ /usr/local/lib/libboost\_thread.so: undefined reference tophtread_detach´
/usr/local/lib/libboost_thread.so: undefined reference tophtread\_join´ /usr/local/lib/libboost\_thread.so: undefined reference tophtread_cond_timedwait´bei bei google nicht wirklich weiter gekommen

-
Brusko schrieb:
bei bei google nicht wirklich weiter gekommen

Das wundert mich nicht, wenn du nach "phtread" suchst. Warum benutzt du nicht Copy&Paste?
-
Weißt du eigentlich was die Fehlermeldung bedeutet?
Außerdem würde ich nicht make benutzen, um boost zu bauen. Wundert mich doch sehr, das die Boost-Anleitung für Linux und Unix von make ausgeht... obwohl Boost selbst kein make favorisiert (wird von denen widerwillig unterstützt).Boost aus den Ports habe ich nie ausprobiert. Benutze einfach bjam und gut ist.
-
Guten Morgen,
Hallo MFK und Artchi
Wofür denn nu C&P ?
Nun das bedeutet doch nen Linkfehler, als ob er da was nicht findet oder nicht ?
Wie gesagt bin ja nen Anfänger und mus vieles ergoogeln, ist ja auch ok sonnst lernt man ja eh nichts.
Aber wieso fragt er nun nach pthreads ? im libordner befindet sich in der hinischt nur libboost_thread.a, libboost_thread.so libboost_thread.so.3.Artchi nun ich hatte ebend durch google gelesen das ich dafür boost brauche und in den Ports von Freebsd hatte ich mir das ausgesucht weil viele doch sagen,,,,am besten bzw am einfachsten ist es über die ports zu gehen.
mfg Michael