Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
1

Ошибка при компиляции Boost

11.10.2017, 16:43. Показов 1956. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.

Для передачи данных с компьютера на Ардуино решил написать программу на С++. Для этого установил полную библиотеку Boost, как написано на этом сайте.

Установка прошла без проблем, далее в Eclipse прописал пути к заголовкам и библиотекам.
Но при попытке сборки кода-примера с оф. сайта Boost
(я ведь правильно понимаю, что этот код позволяет принимать сообщения с СОМ порта?)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//
// blocking_tcp_echo_client.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
 
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <boost/asio.hpp>
 
using boost::asio::ip::tcp;
 
enum { max_length = 1024 };
 
int main(int argc, char* argv[])
{
  try
  {
    if (argc != 3)
    {
      std::cerr << "Usage: blocking_tcp_echo_client <host> <port>\n";
      return 1;
    }
 
    boost::asio::io_service io_service;
 
    tcp::socket s(io_service);
    tcp::resolver resolver(io_service);
    boost::asio::connect(s, resolver.resolve({argv[1], argv[2]}));
 
    std::cout << "Enter message: ";
    char request[max_length];
    std::cin.getline(request, max_length);
    size_t request_length = std::strlen(request);
    boost::asio::write(s, boost::asio::buffer(request, request_length));
 
    char reply[max_length];
    size_t reply_length = boost::asio::read(s,
        boost::asio::buffer(reply, request_length));
    std::cout << "Reply is: ";
    std::cout.write(reply, reply_length);
    std::cout << "\n";
  }
  catch (std::exception& e)
  {
    std::cerr << "Exception: " << e.what() << "\n";
  }
 
  return 0;
}
Но при компиляции возникает ошибка, см. приложение.

После поиска в интернете я решил, что это ошибка при сборке перед установкой, но дело в том, что я вообще не собирал библиотеку, она была в архиве. Подскажите, как это можно исправить?
Миниатюры
Ошибка при компиляции Boost  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2017, 16:43
Ответы с готовыми решениями:

Ошибка при компиляции
Есть код программы органайзера, но из-за чего-то на моем компьютере она не компилируется. Вот...

ошибка при компиляции С++ eclipse
Добрый день. Написал программу на С++ на raspberry, компилируется нормально. Решил запустить ее...

Ошибка сегментирования при компиляции
Когда компилирую через g++ компилируется, при запуске выдает ошибку сегментирования, а при...

Ошибка при компиляции в Code::Blocks
Помогите решить ошибки при компиляции Код: main.cpp #include &lt;iostream&gt; #include...

11
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
11.10.2017, 22:40 2
Ты используешь библиотеку, а значит должен указать:
  • Пути до заголовочных файлов: директория .../include и ключ -I.
  • Пути до объектных (бинарных) файлов: директория .../lib и ключ -L.
  • Конкретные объектные файлы: ключ -l.
В твоём случае, например, -l boost_system -l boost_thread

Добавлено через 2 минуты
Цитата Сообщение от Lictor Посмотреть сообщение
, но дело в том, что я вообще не собирал библиотеку,
Но ты же делал:

Bash
1
2
sudo ./bootstrap.sh --prefix=/usr/local
sudo ./b2 install
0
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
12.10.2017, 17:22  [ТС] 3
Благодарю за ответ!
Уверен, что он мне мог бы помочь,если бы не одно но... я не понимаю куда мне вставить Вашу строку.
Прочел пару сайтов об установке программ на линукс (раз два и т.п.), но не полегчало.
Напишите, пожалуйста, как мне нужно сделать.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
12.10.2017, 17:30 4
Цитата Сообщение от Lictor Посмотреть сообщение
я ведь правильно понимаю, что этот код позволяет принимать сообщения с СОМ порта?
Нет. У Вас TCP-соединение.
В коде, который я Вам давал
используется boost::asio::serial_port
для соединения с Ардуино.
Там же можете подсмотреть настройки соединения.
0
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
12.10.2017, 20:15  [ТС] 5
Croessmah, я обязательно попробую ваш код, как только смогу запустить библиотеку
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
12.10.2017, 20:29 6
Цитата Сообщение от Lictor Посмотреть сообщение
Для этого установил полную библиотеку Boost, как написано на этом сайте.
Как правило, эта библиотека уже есть в репозиториях.
Цитата Сообщение от Lictor Посмотреть сообщение
После поиска в интернете я решил, что это ошибка при сборке перед установкой
Компиляция проходит успешно, но линковщик не может найти указанные символы.
Возможно, Вы не подключили библиотеку (не путать с заголовочными файлами).
0
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
12.10.2017, 20:54  [ТС] 7
Да вроде все подключил:
Миниатюры
Ошибка при компиляции Boost  
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.10.2017, 04:48 8
А pthread?
0
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
13.10.2017, 16:29  [ТС] 9
Цитата Сообщение от Croessmah Посмотреть сообщение
pthread
Цитата Сообщение от Croessmah Посмотреть сообщение
pthread
Так а такой библиотеки не существует (в интернете поискал, boost такую не использует), есть только thread, она подключена.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.10.2017, 17:29 10
Лучший ответ Сообщение было отмечено Lictor как решение

Решение

Цитата Сообщение от Lictor Посмотреть сообщение
Так а такой библиотеки не существует
https://www.gnu.org/software/hurd/libpthread.html
Цитата Сообщение от Lictor Посмотреть сообщение
boost такую не использует
Именно поэтому ошибка undefined reference pthread_*?
Цитата Сообщение от Lictor Посмотреть сообщение
есть только thread, она подключена.
pthread добавьте.
1
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
13.10.2017, 17:53 11
Цитата Сообщение от Croessmah Посмотреть сообщение
pthread добавьте.
как бы он теперь её не попытался скачать, скомпилировать и установить...
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.10.2017, 18:29 12
AlexVRud, я тоже об этом подумал,
но, надеюсь, не будет.
0
13.10.2017, 18:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2017, 18:29
Помогаю со студенческими работами здесь

Ошибка при запуске(компиляции) программы в терминале
пишет что нет такого файла, хотя он есть, и в то же время простая программа т.к. &quot;Helloworld''...

Ошибка при компиляции с подключенным boost ом
Вот код который не могу скомпилировать #include &lt;boost/regex.hpp&gt; #include &lt;iostream&gt; #include...

Ошибка при компиляции с использованием библиотеки boost
Всем привет. Написал код. В самой студии ничего красным не подсвечивает, ошибок нет. Как только...

Bind (Soket) - ошибка при компиляции после подключения boost
В общем подключил в проэкт #include &lt;boost/regex.hpp&gt; теперь при компиляции стало ругатся на ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru