Ошибка связи с процессом наддува (и другими надстройками)

0

Вот мой код. Я просто тестирую 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

Теги:
linker
boost

1 ответ

0
Лучший ответ

Простой поиск бросил меня на " Это".

Увидев, что вы отправили команду компиляции, я предполагаю, что вы просто пропускаете -lboost_iostreams в настройках компоновщика.

  • 0
    О, мои извинения. Я искал, но ничего не нашел. Я попробую это, когда вернусь домой. Извините за вопрос noob, но эта тема, которую вы связали, указывает на то, что эта опция компоновщика будет очевидна. Это было не очевидно для меня. Где я могу посмотреть, какие параметры компоновщика необходимы для использования в будущем?
  • 0
    @smalltock Поскольку что-то кажется очевидным для некоторых, это не значит, что это очевидно для всех, поэтому не беспокойтесь о новичках. Я не эксперт по бусту, но в первую очередь я бы посмотрел документацию / руководство. Вот документация для надстроек. На этой странице перечислены все -lboost_<lib-name-here> и я предполагаю, что каждая из них должна быть связана (при использовании) с -lboost_<lib-name-here> , но я могу ошибаться. Возможно, страница «Начало работы» может дать дополнительную информацию. знак равно
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню