Заметки об исследовании Mqtt: перекрестная компиляция и трансплантация (1)
Заметки об исследовании Mqtt: перекрестная компиляция и трансплантация (1)

Краткое описание

Mqtt в настоящее время широко используется в индустрии Интернета вещей. Mqtt — это промежуточное программное обеспечение на уровне приложений. Это промежуточное программное обеспечение реализует механизм подписки и публикации сообщений. В Интернете можно найти множество описаний реализации Mqtt, поэтому я не буду описывать их здесь подробно. Фактически, в наших предыдущих продуктах мы также разработали аналогичное промежуточное программное обеспечение. Помимо функций подписки и публикации, оно также имеет связь «один к одному», которая реализует связь между различными процессами в системе Linux. Связь основана на TCP. , UDP и сокет Unix. Целью трансплантации Mqtt здесь является в основном интеграция с IoT-продуктами других производителей (сюда пересаживаются как сервер, так и клиент).

Подготовка

Выбранный здесь Mosquitto используется для трансплантации. Я выбрал следующую версию.

  1. 1. mosquitto-2.0.10.tgz
  2. 2. openssl-3.0.7.tgz
  3. 3. libuuid-1.0.3.tar.gz

компилировать

  1. 1. компилироватьlibuuid Разархивироватькомпилироватьtar xvzf libuuid-1.0.3.tar.gz ./configure --prefix=/home/workplace/mqtt/uuid/build-hi3536c/install CC=arm-hisiv500-linux-gcc

После завершения обычного выполнения Makefile будет сгенерирован и затем выполнен:make make install

  1. 2. компилироватьlib Разархивироватькомпилировать:tar xvzf openssl-3.0.7.tar.gz CC=arm-hisiv500-linux-gcc ./config no-asm no-async shared --prefix=/home/workplace/hi3536c/openssl/install

После завершения обычного выполнения Makefile будет сгенерирован и затем выполнен:

Язык кода:javascript
копировать
make
make install
  1. 1. mosquittoкомпилировать Разархивироватькомпилировать: ```cpp tar xvzf mosquitto-2.0.10.tar.gz

#Я скопировал приведенные выше файлы библиотеки uuid и openssl для компиляции в библиотеку крестовой компиляции.,Итак, ниже компилировать mosquito, когда,Путь не добавлен # make With_SRV=no CC=arm-none-linux-gcc CXX=arm-none-linux-g++ LDFLAGS="-lssl -lcrypto -luuid -lm -lpthread -ldl"

Язык кода:javascript
копировать

После завершения обычного выполнения Makefile будет сгенерирован и затем выполнен:
```bash
make
make install

компилироватьвопрос

Возможно, на разных компилируемых устройствах будут разные проблемы.,Компилирующее устройство HiSilicon, которое я использую здесь,Есть ошибка:

  1. 1. Неопределенная ссылка на «pthread_setname_np».

Код выглядит следующим образом:

Эта функция не существует в текущей компилируемой библиотеке.,Это можно закомментировать напрямую,скомпилируйте еще раз и проблем не будет.

тест

Если вы устанавливаете Mostic под Windows, запустите его напрямую, подпишитесь на Mostic_sub и опубликуйте на Mostic_pub, чтобы посмотреть, сможете ли вы его получить.

Начать подписку: тема привет.

Язык кода:javascript
копировать
mosquitto_sub -h 192.168.1.36 -p 1883 -t "hello"

Опубликовать сообщение:

Язык кода:javascript
копировать
mosquitto_pub -h 192.168.1.36 -p 1883 -t "hello" "test pub msg"

Подпишитесь на получение сообщений здесь:

Язык кода:javascript
копировать
mosquitto_sub -h 127.0.0.1 -p 1883 -t "hello"
test pub msg
test pub msg
test pub msg
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода