Вот мой код. Я просто тестирую Boost :: process, поэтому я смогу использовать его, если/когда мне это нужно. Я не знаю, почему я получаю ошибку связывания, которую я получаю. Я новичок C++ программист. Я знаю понятия, но я делаю частые ошибки на практике и плохо разбираюсь. Я ценю любую помощь, которую я могу получить с этим.
#include<iostream>
#include<boost/process.hpp>
#include<boost/iostreams/device/file_descriptor.hpp>
namespace bp = ::boost::process;
namespace bpi = ::boost::process::initializers;
namespace bio = ::boost::iostreams;
int main(int argc, char *argv[])
{
bp::pipe p = bp::create_pipe();
bio::file_descriptor_sink sink(p.sink, bio::close_handle);
bp::execute(
bpi::run_exe("/usr/bin/ls"),
bpi::bind_stdout(sink)
);
return(0);
}
И вот моя ошибка...
/tmp/cc7cmrV8.o: In function 'main':
test.cpp:(.text+0x2b): undefined reference to 'boost::iostreams::file_descriptor_sink::file_descriptor_sink(int, boost::iostreams::file_descriptor_flags)'
/tmp/cc7cmrV8.o: In function 'boost::process::posix::initializers::bind_stdout::bind_stdout(boost::iostreams::file_descriptor_sink const&)':
test.cpp:(.text._ZN5boost7process5posix12initializers11bind_stdoutC2ERKNS_9iostreams20file_descriptor_sinkE[_ZN5boost7process5posix12initializers11bind_stdoutC5ERKNS_9iostreams20file_descriptor_sinkE]+0x2b): undefined reference to 'boost::iostreams::file_descriptor_sink::file_descriptor_sink(boost::iostreams::file_descriptor_sink const&)'
/tmp/cc7cmrV8.o: In function 'void boost::process::posix::initializers::bind_stdout::on_exec_setup<boost::process::posix::executor>(boost::process::posix::executor&) const':
test.cpp:(.text._ZNK5boost7process5posix12initializers11bind_stdout13on_exec_setupINS1_8executorEEEvRT_[_ZNK5boost7process5posix12initializers11bind_stdout13on_exec_setupINS1_8executorEEEvRT_]+0x18): undefined reference to 'boost::iostreams::file_descriptor::handle() const'
collect2: error: ld returned 1 exit status
Платформа: Linux 64-разрядная
Boost: 1,55 (устанавливается через pacman)
Boost :: process: 0.5
Команда компиляции: g++ -Wall test.cpp -o spegh.elf -lboost_system
Простой поиск бросил меня на " Это".
Увидев, что вы отправили команду компиляции, я предполагаю, что вы просто пропускаете -lboost_iostreams
в настройках компоновщика.
-lboost_<lib-name-here>
и я предполагаю, что каждая из них должна быть связана (при использовании) с-lboost_<lib-name-here>
, но я могу ошибаться. Возможно, страница «Начало работы» может дать дополнительную информацию. знак равно