1

私はBoost::Process(1.64.0) をいじり、GCC 7.1.1 を使用してvfork()、プロセスをフォークするときに の使用を強制しようとしています。次のプログラムのリンカー エラーが表示されます。

#include <boost/process.hpp>

namespace bp = ::boost::process;

int main(void)
{
  bp::child c("ls", bp::posix::use_vfork);
  c.wait();
  return 0;
}

使用:

g++ use_vfork.cpp

生成されるリンカ エラーは次のとおりです。

関数 'boost::process::detail::posix::executor >、boost::fusion::filter_view&、boost::process::detail::posix::use_vfork_ const&> const、boost::process::detail 内::is_initializer > > > >::operator()()': spawn_simple.cpp:(.text._ZN5boost7process6detail5posix8executorINS_6fusion10joint_viewINS4_5tupleIJNS2_12exe_cmd_initIcEEEEENS4_11filter_viewIKNS6_IJRA6_KcRNS2_8null_outILi1ELin1EEERKNS2_10use_vfork_EEEENS1_14is_initializerIN4mpl_3argILin1EEEEEEEEEEclEv[_ZN5boost7process6detail5posix8executorINS_6fusion10joint_viewINS4_5tupleIJNS2_12exe_cmd_initIcEEEEENS4_11filter_viewIKNS6_IJRA6_KcRNS2_8null_outILi1ELin1EEERKNS2_10use_vfork_EEEENS1_14is_initializerIN4mpl_3argILin1EEEEEEEEEEclEv]+0x31): undefined reference to `boost::process::detail::posix::executor > 、boost::fusion::filter_view&、boost::process::detail::posix::use_vfork_ const&> const, boost::process::detail::is_initializer > > > >::invoke(mpl_::bool_, mpl_::bool_)'

私の知る限り、Boost Process 自体はヘッダーのみなので、未定義の参照について不平を言っているのはなぜboost::process<...>::invoke()ですか?

と を追加-lboost_systemしてみまし-lboost_iostreamsたが、リンカー エラーは解決しません。

4

1 に答える 1