2012-10-19 4 views
6

Ich habe ein OS und kompilieren mit -mthread verfügbar. Thow ich habe -pthread. Wie kompiliert man boost_thread mit -pthread anstelle von -mthread?Wie kompiliere boost_thread mit "-pthread" statt "-mthread"?

Mein aktuelles Compiler Buildprotokoll:

./b2 -j1 --with-thread link=static --prefix=./install-dir release threading=multi --builddir=./bu 
ild-dir install 

Component configuration: 

    - chrono     : not building 
    - context     : not building 
    - date_time    : not building 
    - exception    : not building 
    - filesystem    : not building 
    - graph     : not building 
    - graph_parallel   : not building 
    - iostreams    : not building 
    - locale     : not building 
    - math      : not building 
    - mpi      : not building 
    - program_options   : not building 
    - python     : not building 
    - random     : not building 
    - regex     : not building 
    - serialization   : not building 
    - signals     : not building 
    - system     : not building 
    - test      : not building 
    - thread     : building 
    - timer     : not building 
    - wave      : not building 

...patience... 
...found 19764 targets... 
...updating 16 targets... 
gcc.compile.c++ bin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi/error_code.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -DNDEBUG -I"." -c -o "bin.v2\libs\system\build\gcc-4.2. 
1\release\link-static\threading-multi\error_code.o" "libs\system\src\error_code.cpp" 

...failed gcc.compile.c++ bin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi/error_code.o... 
...skipped <pbin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi>libboost_system.a(clean) for lack of <pbin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi>error_ 
code.o... 
...skipped <pbin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi>libboost_system.a for lack of <pbin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi>error_code.o. 
.. 
...skipped <pinstall-dir/lib>libboost_system.a for lack of <pbin.v2/libs/system/build/gcc-4.2.1/release/link-static/threading-multi>libboost_system.a... 
gcc.compile.c++ bin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi/chrono.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -Wextra -Wno-long-long -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATE 
D -DBOOST_SYSTEM_STATIC_LINK=1 -DNDEBUG -I"." -c -o "bin.v2\libs\chrono\build\gcc-4.2.1\release\link-static\threading-multi\chrono.o" "libs\chrono\src\chrono.cpp" 

...failed gcc.compile.c++ bin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi/chrono.o... 
gcc.compile.c++ bin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi/thread_clock.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -Wextra -Wno-long-long -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATE 
D -DBOOST_SYSTEM_STATIC_LINK=1 -DNDEBUG -I"." -c -o "bin.v2\libs\chrono\build\gcc-4.2.1\release\link-static\threading-multi\thread_clock.o" "libs\chrono\src\thread_clock.cpp" 

...failed gcc.compile.c++ bin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi/thread_clock.o... 
gcc.compile.c++ bin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi/process_cpu_clocks.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -Wextra -Wno-long-long -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATE 
D -DBOOST_SYSTEM_STATIC_LINK=1 -DNDEBUG -I"." -c -o "bin.v2\libs\chrono\build\gcc-4.2.1\release\link-static\threading-multi\process_cpu_clocks.o" "libs\chrono\src\process_cpu_clocks.cpp" 

...failed gcc.compile.c++ bin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi/process_cpu_clocks.o... 
...skipped <pbin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi>libboost_chrono.a(clean) for lack of <pbin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi>chrono 
.o... 
...skipped <pbin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi>libboost_chrono.a for lack of <pbin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi>chrono.o... 
...skipped <pinstall-dir/lib>libboost_chrono.a for lack of <pbin.v2/libs/chrono/build/gcc-4.2.1/release/link-static/threading-multi>libboost_chrono.a... 
gcc.compile.c++ bin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi/pthread/thread.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -Wextra -Wno-long-long -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPREC 
ATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_POSIX -DNDEBUG -I"." -c -o "bin.v2\libs\thread\build\gcc-4.2.1\release\link-static\threading-multi\pthread\thread.o" "libs\ 
thread\src\pthread\thread.cpp" 

...failed gcc.compile.c++ bin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi/pthread/thread.o... 
gcc.compile.c++ bin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi/pthread/once.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -Wextra -Wno-long-long -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPREC 
ATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_POSIX -DNDEBUG -I"." -c -o "bin.v2\libs\thread\build\gcc-4.2.1\release\link-static\threading-multi\pthread\once.o" "libs\th 
read\src\pthread\once.cpp" 

...failed gcc.compile.c++ bin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi/pthread/once.o... 
gcc.compile.c++ bin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi/future.o 
cc1plus: error: unrecognized command line option "-mthreads" 

    "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -mthreads -Wextra -Wno-long-long -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPREC 
ATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_POSIX -DNDEBUG -I"." -c -o "bin.v2\libs\thread\build\gcc-4.2.1\release\link-static\threading-multi\future.o" "libs\thread\s 
rc\future.cpp" 

...failed gcc.compile.c++ bin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi/future.o... 
...skipped <pbin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi>libboost_thread.a(clean) for lack of <pbin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi>pthrea 
d/thread.o... 
...skipped <pbin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi>libboost_thread.a for lack of <pbin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi>pthread/threa 
d.o... 
...skipped <pinstall-dir/lib>libboost_thread.a for lack of <pbin.v2/libs/thread/build/gcc-4.2.1/release/link-static/threading-multi>libboost_thread.a... 
...failed updating 7 targets... 
...skipped 9 targets... 

Ist es möglich, Patch boost_thread irgendwie so auf meiner Plattform mit meinem Compiler zu kompilieren boost_thread thint zu machen, es wird mit -pthread kompiliert werden?

Platform - alt, hevily modifizierte cigwin, gcc-4.2.1

+0

[Dies] (http://antonym.org/2009/05/threading-with-boost---part-i- starten creating-threads.html) könnte nützlich sein. – Recker

+1

Vielleicht möchten Sie die Besonderheiten der Plattform, der verwendeten Tools (einschließlich der Version) und der Version von Boost you are erwähnen Gebäude. FWIW, "-mthreads" wird an einigen Stellen in 'tools/build/v2/tools/gcc.jam' erwähnt, aber da ich nichts über' jam' (oder 'b2' oder was auch immer das Boost-Build-Tool genannt wird) weiß, außer wie ich es mithilfe von Schritt-für-Schritt-Rezepten aufrufen kann, weiß ich nicht, was Sie mit diesen Informationen machen könnten. Oder wenn es sogar nützlich ist. –

Antwort

2

Sie auf Patch-Tools versuchen können/build/v2/tools/gcc.jam

1017 rule setup-threading (targets * : sources * : properties *) 
1018 { 
1019  local threading = [ feature.get-values threading : $(properties) ] ; 
1020  if $(threading) = multi 
1021  { 
1022   local target = [ feature.get-values target-os : $(properties) ] ; 
1023   local option ; 
1024   local libs ; 
1025 
1026   switch $(target) 
1027   { 
1028    case windows : option = -mthreads ; 
1029    case cygwin : option = -mthreads ; 
1030    case solaris : option = -pthreads ; libs = rt ; 
1031    case beos : # No threading options. 
1032    case *bsd : option = -pthread ; # There is no -lrt on BSD. 
1033    case sgi  : # gcc on IRIX does not support multi-threading. 
1034    case darwin : # No threading options. 
1035    case *  : option = -pthread ; libs = rt ; 
1036   } 
1037 

Wenn Sie weitere Informationen geben, Ich könnte versuchen, dir zu helfen.

0

Sie können Markierungen an den Compiler übergeben Sie die CXXFLAGS Argumente finden Sie unter http://www.boost.org/build/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.gcc Einige, die hier vielleicht sind helfen: CXXFLAGS = -DPTHREADS CXXFLAGS = -DBOOST_THREAD_POSIX CXXFLAGS = -pthread CXXFLAGS = -DTHREAD
Sie können experimentieren müssen erhalten genau das gewünschte Ergebnis, aber ich würde durch erneutes Ausführen Ihren Befehl als

./b2 -j1 --with-thread link=static cxxflags=-DPTHREADS cxxflags=-DBOOST_THREAD_POSIX cxxflags=-pthread cxxflags=-DTHREAD --prefix=./install-dir release threading=multi --builddir=./build-dir install