2012-10-19 21 views
6

Tôi có một hệ điều hành và biên dịch không có sẵn -mthread. Thow tôi có -pthread. Cách biên dịch boost_thread với -pthread thay vì -mthread?Làm thế nào để biên dịch boost_thread với "-pthread" thay vì "-mthread"?

My hiện biên dịch build log:

./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... 

Có thể bằng cách nào đó vá boost_thread để biên dịch trên nền tảng của tôi với trình biên dịch của tôi như vậy để làm boost_thread thint rằng nó sẽ được biên soạn với -pthread?

Nền tảng - cũ, sửa đổi hevily cigwin, gcc-4.2.1

+0

[This] (http://antonym.org/2009/05/threading-with-boost---part-i- create-threads.html) có thể hữu ích .... – Recker

+1

Bạn có thể muốn đề cập đến các chi tiết cụ thể về nền tảng, công cụ bạn đang sử dụng (bao gồm cả phiên bản) và phiên bản Tăng cường bạn Tòa nhà. FWIW, '-mthreads' được đề cập trong một vài vị trí trong' tools/build/v2/tools/gcc.jam', nhưng vì tôi không biết gì về 'jam' (hoặc' b2' hoặc bất cứ công cụ tăng cường nào được gọi) ngoại trừ cách gọi nó bằng cách sử dụng công thức nấu ăn từng bước, tôi không biết bạn có thể làm gì với thông tin đó. Hoặc nếu nó thậm chí còn hữu ích. –

Trả lời

2

Bạn có thể thử công cụ vá/xây dựng/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 

Nếu bạn cung cấp thêm thông tin, Tôi có thể cố gắng giúp bạn.

0

Bạn có thể vượt qua những lá cờ để trình biên dịch sử dụng các đối số CXXFLAGS, xem http://www.boost.org/build/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.gcc Một số có thể giúp đây là: CXXFLAGS = -DPTHREADS CXXFLAGS = -DBOOST_THREAD_POSIX CXXFLAGS = -pthread CXXFLAGS = -DTHREAD
Bạn có thể phải thử nghiệm để nhận được chính xác kết quả bạn muốn, nhưng tôi sẽ bắt đầu bằng cách chạy lại lệnh của bạn dưới dạng

./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 
Các vấn đề liên quan