So, I'm trying to use boost.process library. I downloaded package from this location , copied includes from boost subdirectory into /usr/include/boost , wrote a simple code:
namespace bp = ::boost::process;
std::string execApp = "make";
std::vector<std::string> args;
args.push_back("-C ../build");
bp::context ctx;
ctx.stdout_behavior = bp::silence_stream();
bp::child buildProcess = bp::launch(execApp, args, ctx);
It compiles but fails at linker:
CMakeFiles/DebugConsole.dir/Debug/DebugConsole.cpp.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:208: undefined reference to `boost::system::get_system_category()'
/usr/include/boost/system/error_code.hpp:209: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::get_system_category()'
CMakeFiles/DebugConsole.dir/Debug/DebugConsole.cpp.o: In function `boost::process::detail::file_handle::posix_remap(int)':
/usr/include/boost/process/detail/file_handle.hpp:264: undefined reference to `boost::system::get_system_category()'
/usr/include/boost/process/detail/file_handle.hpp:269: undefined reference to `boost::system::get_system_category()'
CMakeFiles/DebugConsole.dir/Debug/DebugConsole.cpp.o: In function `boost::process::detail::file_handle::posix_dup(int, int)':
/usr/include/boost/process/detail/file_handle.hpp:295: undefined reference to `boost::system::get_system_category()'
CMakeFiles/DebugConsole.dir/Debug/DebugConsole.cpp.o: In function `pipe':
/usr/include/boost/process/detail/pipe.hpp:86: undefined reference to `boost::system::get_system_category()'
CMakeFiles/DebugConsole.dir/Debug/DebugConsole.cpp.o:/usr/include/boost/process/detail/posix_ops.hpp:202: more undefined references to `boost::system::get_system_category()' follow
collect2: ld returned 1 exit status
I've linked such libraries: filesystem system date_time
You might want to see the last answer here.
I had a very similar problem and found this post while searching. I managed to solved the problem after much more searching, so I post it here for other people.
I had to link to the proper library this way: g++ boost_example.cpp -o run -lboost_filesystem-mt http://linux.overshoot.tv/ticket/127
The real problem is that the boost documentation is lacking and does not say which library to link to. See: http://linux.overshoot.tv/ticket/129
Anyway, to use boost/file_system, link to: -lboost_filesystem-mt .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.