Связывание boost::asio через терминал

Я пытаюсь связать boost::asio с помощью терминала (я также использую текстовый редактор).

Что я пробовал

Я провел некоторые исследования в Интернете (я ничего не нашел о своем дистрибутиве) - я обнаружил, что должен установить эту библиотеку, выполнив следующую команду на терминале:

sudo pacman -S libboost-all-dev

Это результат, который я получаю:

ошибка: не найден следующий пакет: libboost-all-dev

Последний вопрос

Как я могу установить и правильно связать boost::asio с моим .cpp файлом?

Примечания:

  • Я использую Архлинукс

person orlow65    schedule 28.12.2015    source источник
comment
Как вы можете связать что-то с вашим текстовым редактором?! Может быть, вы имеете в виду командную строку или что?   -  person ForceBru    schedule 28.12.2015
comment
@ForceBru правильно. я отредактировал свой вопрос   -  person orlow65    schedule 28.12.2015
comment
Я знаю, что это не может быть прямым вопросом, но я предлагаю вам использовать CMake в качестве менеджера проекта и обрабатывать с его помощью Boost. Используя CMake, вы даже можете указать параметры компилятора для использования Boost с поддержкой многопоточности или статически/динамически связать с ним ваши цели. Проверьте этот пост SO: stackoverflow.com/a/3917033/2369389   -  person madduci    schedule 28.12.2015
comment
@ orlow65 -lboost_system должно быть достаточно. Кроме того, если вы используете потоки для красивого масштабирования asio, вам также понадобится -lboost_thread.   -  person GreenScape    schedule 28.12.2015
comment
@GreenScape, не могли бы вы сказать мне точное имя? Если я добавлю -boost_system в качестве параметра, я получаю ошибки...   -  person orlow65    schedule 28.12.2015
comment
@ orlow65 orlow65 это параметры для gcc или clang.   -  person GreenScape    schedule 28.12.2015
comment
@orlow65 для установки пакета кажется, что вам нужно pacman -Ss boost   -  person GreenScape    schedule 28.12.2015
comment
@GreenScape уже установлен. Это команда, которую я пробовал: g++ /home/hlw/Desktop/code.cpp -lboost-system - но я все равно получаю ошибку dat (не найдено):/   -  person orlow65    schedule 28.12.2015
comment
@orlow65 orlow65 Итак, вы должны попробовать -lboost_system, как я уже писал ранее. Между boost и system есть подчеркивание (_).   -  person GreenScape    schedule 28.12.2015
comment
@GreenScape, ты решил мою проблему! Гений! Благодарю вас!   -  person orlow65    schedule 28.12.2015
comment
@orlow65 не за что   -  person GreenScape    schedule 28.12.2015


Ответы (2)


Чтобы найти пакет в Arch Linux, выполните:

sudo pacman -Ss boost

В этом списке будут пакеты со строкой boost. Или вы можете посмотреть на сайте пакета: https://www.archlinux.org/packages/extra/x86_64/boost/

Одна вещь, которую вы должны понимать о boost, заключается в том, что большинство его модулей предназначены только для заголовков; если компоновщик жалуется на неопределенные ссылки, вам придется связать необходимые файлы. Чтобы связать boost-asio, вы должны сделать

g++ -lboost-system <source> <exe>
person Poriferous    schedule 28.12.2015
comment
Я получаю: /usr/bin/ld: unable to find -lboost-asio \n collect2: error: ld returned 1 exit status - но я их только что установил - person orlow65; 28.12.2015
comment
Я проверил свою собственную систему на наличие boost-asio; нет необходимости связывать это. Но лучше связать boost-system. В этом случае boost-asio является модулем только для заголовков. - person Poriferous; 28.12.2015
comment
если я не подключаю boost-систему, я получаю ошибки! Но когда я пытаюсь скомпилировать с параметром -lboost-system, я получаю что-то вроде: unable to find boost-system! :( - person orlow65; 28.12.2015
comment
Большое спасибо за Вашу помощь! Я решил свою проблему! - person orlow65; 28.12.2015
comment
не могли бы вы поделиться, как вы узнали об использовании -lboost-system? Кажется, его нет в документах boost, его нет и на странице руководства g++. И моя система, похоже, вообще не распознает -lboost-system! - person Anas Ayubi; 27.04.2018

Как установить boost в Arch Linux

Вы не можете связывать библиотеки внутри файлов *.cpp. Вы должны перечислить необходимые библиотеки, используя параметр -l в командной строке g++.

g++ -lboos-asio -lboost-system myfile.cpp -o myapp
person brainstream    schedule 28.12.2015
comment
Я получаю: /usr/bin/ld: unable to find -lboost-asio \n collect2: error: ld returned 1 exit status - но я их только что установил - person orlow65; 28.12.2015
comment
Я вспомнил, что boost-asio — это библиотека только для сложных задач. Ссылка просто boost-система. - person brainstream; 28.12.2015
comment
Большое спасибо за Вашу помощь! Я решил свою проблему! - person orlow65; 28.12.2015