如何构建 boost fiber 库以支持分段堆栈
how to build boost fiber library for segmented stack support
我正在尝试构建 boost fiber 库,我不确定要将什么命令行参数传递给 ./b2。
./b2 --reconfigure cxxflags="-std=c++14" threading=multi variant=release link=shared --toolset=gcc segmented-stacks=on
执行配置检查
- 32-bit : no
- 64-bit : yes
- arm : no
- mips1 : no
- power : no
- sparc : no
- x86 : yes
构建 Boost C++ 库。
- symlinks supported : yes
- C++11 mutex : yes
- lockfree boost::atomic_flag : yes
- Boost.Config Feature Check: cxx11_auto_declarations : yes
- Boost.Config Feature Check: cxx11_constexpr : yes
- Boost.Config Feature Check: cxx11_defaulted_functions : yes
- Boost.Config Feature Check: cxx11_final : yes
- Boost.Config Feature Check: cxx11_hdr_tuple : yes
- Boost.Config Feature Check: cxx11_lambdas : yes
- Boost.Config Feature Check: cxx11_noexcept : yes
- Boost.Config Feature Check: cxx11_nullptr : yes
- Boost.Config Feature Check: cxx11_rvalue_references : yes
- Boost.Config Feature Check: cxx11_template_aliases : yes
- Boost.Config Feature Check: cxx11_thread_local : yes
- Boost.Config Feature Check: cxx11_variadic_templates : yes
- has_icu builds : yes
警告:图形库不包含基于 MPI 的并行组件。
注意:要启用它们,请将 "using mpi ;" 添加到您的用户-config.jam
- zlib:是的
- bzip2:没有
-iconv(libc):是的
- 重症监护病房:是的
- 支持原生原子 int32:是的
- pthread-supports-robust-mutexes:是的
- 编译器支持可见性:是的
- 编译器支持-ssse3:是的
- 编译器支持 avx2:是的
- gcc 可见性:是
- 长期双重支持:是的
警告:跳过可选的消息传递接口 (MPI) 库。
注意:要启用 MPI 支持,请将 "using mpi ;" 添加到 user-config.jam。
注意:要抑制此消息,请将“--without-mpi”传递给 bjam。
注意:否则,您可以安全地忽略此消息。
组件配置:
- atomic : building
- chrono : building
- container : building
- context : building
- coroutine : building
- coroutine2 : building
- date_time : building
- exception : building
- fiber : building
- filesystem : building
- graph : building
- graph_parallel : building
- iostreams : building
- locale : building
- log : building
- math : building
- metaparse : building
- mpi : building
- program_options : building
- python : building
- random : building
- regex : building
- serialization : building
- signals : building
- system : building
- test : building
- thread : building
- timer : building
- type_erasure : building
- wave : building
gcc.link.dll bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_fiber.so.1.62.0
/usr/bin/ld: bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/algorithm.o: relocation R_X86_64_PC32 against undefined symbol `__morestack' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
"g++" -o "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_fiber.so.1.62.0" -Wl,-h -Wl,libboost_fiber.so.1.62.0 -shared -Wl,--start-group "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/algorithm.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/round_robin.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/shared_work.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/barrier.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/condition_variable.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/context.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/fiber.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/future.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/properties.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/recursive_mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/recursive_timed_mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/timed_mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/scheduler.o" "bin.v2/libs/context/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_context.so.1.62.0" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -pthread -m64
...failed gcc.link.dll bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_fiber.so.1.62.0...
...skipped <pstage/lib>libboost_fiber.so.1.62.0 for lack of <pbin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi>libboost_fiber.so.1.62.0...
...skipped <pstage/lib>libboost_fiber.so for lack of <pstage/lib>libboost_fiber.so.1.62.0...
因为'link=shared'你需要添加'linkflags=-lgcc'(libgcc包含与split-stacks相关的函数)
我正在尝试构建 boost fiber 库,我不确定要将什么命令行参数传递给 ./b2。
./b2 --reconfigure cxxflags="-std=c++14" threading=multi variant=release link=shared --toolset=gcc segmented-stacks=on 执行配置检查
- 32-bit : no
- 64-bit : yes
- arm : no
- mips1 : no
- power : no
- sparc : no
- x86 : yes
构建 Boost C++ 库。
- symlinks supported : yes
- C++11 mutex : yes
- lockfree boost::atomic_flag : yes
- Boost.Config Feature Check: cxx11_auto_declarations : yes
- Boost.Config Feature Check: cxx11_constexpr : yes
- Boost.Config Feature Check: cxx11_defaulted_functions : yes
- Boost.Config Feature Check: cxx11_final : yes
- Boost.Config Feature Check: cxx11_hdr_tuple : yes
- Boost.Config Feature Check: cxx11_lambdas : yes
- Boost.Config Feature Check: cxx11_noexcept : yes
- Boost.Config Feature Check: cxx11_nullptr : yes
- Boost.Config Feature Check: cxx11_rvalue_references : yes
- Boost.Config Feature Check: cxx11_template_aliases : yes
- Boost.Config Feature Check: cxx11_thread_local : yes
- Boost.Config Feature Check: cxx11_variadic_templates : yes
- has_icu builds : yes
警告:图形库不包含基于 MPI 的并行组件。 注意:要启用它们,请将 "using mpi ;" 添加到您的用户-config.jam - zlib:是的 - bzip2:没有 -iconv(libc):是的 - 重症监护病房:是的 - 支持原生原子 int32:是的 - pthread-supports-robust-mutexes:是的 - 编译器支持可见性:是的 - 编译器支持-ssse3:是的 - 编译器支持 avx2:是的 - gcc 可见性:是 - 长期双重支持:是的 警告:跳过可选的消息传递接口 (MPI) 库。 注意:要启用 MPI 支持,请将 "using mpi ;" 添加到 user-config.jam。 注意:要抑制此消息,请将“--without-mpi”传递给 bjam。 注意:否则,您可以安全地忽略此消息。
组件配置:
- atomic : building
- chrono : building
- container : building
- context : building
- coroutine : building
- coroutine2 : building
- date_time : building
- exception : building
- fiber : building
- filesystem : building
- graph : building
- graph_parallel : building
- iostreams : building
- locale : building
- log : building
- math : building
- metaparse : building
- mpi : building
- program_options : building
- python : building
- random : building
- regex : building
- serialization : building
- signals : building
- system : building
- test : building
- thread : building
- timer : building
- type_erasure : building
- wave : building
gcc.link.dll bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_fiber.so.1.62.0
/usr/bin/ld: bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/algorithm.o: relocation R_X86_64_PC32 against undefined symbol `__morestack' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
"g++" -o "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_fiber.so.1.62.0" -Wl,-h -Wl,libboost_fiber.so.1.62.0 -shared -Wl,--start-group "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/algorithm.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/round_robin.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/algo/shared_work.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/barrier.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/condition_variable.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/context.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/fiber.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/future.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/properties.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/recursive_mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/recursive_timed_mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/timed_mutex.o" "bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/scheduler.o" "bin.v2/libs/context/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_context.so.1.62.0" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -pthread -m64
...failed gcc.link.dll bin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi/libboost_fiber.so.1.62.0...
...skipped <pstage/lib>libboost_fiber.so.1.62.0 for lack of <pbin.v2/libs/fiber/build/gcc-5.4.0/release/segmented-stacks-on/threading-multi>libboost_fiber.so.1.62.0...
...skipped <pstage/lib>libboost_fiber.so for lack of <pstage/lib>libboost_fiber.so.1.62.0...
因为'link=shared'你需要添加'linkflags=-lgcc'(libgcc包含与split-stacks相关的函数)