Кросс-Компиляция И Сборка Пакета Для Synology Dsm

На новой работе мне поставили задачу запустить продукт на NAS от производителей Synology и QNAP. Продукт написан на C++ с использованием C++11, Boost и Qt5. В отсутствие свободного веб-разработчика интерфейс был написан на вес , который, в свою очередь, использует для сборки CMake. Ниже будет сборка этого зоопарка и создание простого пакета.

Основным источником информации является официальное руководство.

Руководство разработчика DSM , описание в общих чертах работы с тулчейном (установка, компиляция проектов с открытым исходным кодом, упаковка).

Потому что я купил бюджетный вариант ДС 114 , у которого под капотом Marvell Armada 370 и версия прошивки DSM 5.2, то все будет собрано под арм.

Для подготовки среды я буду использовать пакет инструментов , который можно скачать со страницы проекта Проект Synology с открытым исходным кодом.

Это немного удобнее, поскольку устройства разных ценовых категорий поставляются с разными процессорами, что требует загрузки нескольких наборов инструментов.

Более подробную информацию можно найти на странице Какой процессор у моего NAS? .

распакуйте пакет инструментов

  
  
   

$ mkdir -p ~/synology/toolkit $ tar xvf pkgscripts.tgz -C ~/synology/toolkit

выкачиваем окружение и инструменты

$ cd ~/synology/toolkit/pkgscripts/ $ sudo .

/EnvDeploy -v 5.2 -p armada370



Способствовать росту

Boost на удивление довольно легко собрать.

В огне ~/user-config.jam мы регистрируемся

using gcc : arm : arm-marvell-linux-gnueabi-g++ ;

и соберите:

$ .

/bootstrap.sh --prefix=/home/dmitry/synology/toolkit/build_env/ds.armada370-5.2/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc $ export PATH=~/synology/toolkit/build_env/ds.armada370-5.2/usr/local/arm-marvell-linux-gnueabi/bin:$PATH $ .

/b2 toolset=gcc-arm link=static threading=multi install



Веб-инструментарий

Для настройки CMake я использую файл цепочки инструментов инструментальная цепочка-arm-marvell.cmake

SET(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_SYSTEM_VERSION 1) SET(CMAKE_C_COMPILER /home/dmitry/synology/toolkit/build_env/ds.armada370-5.2/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-gcc) SET(CMAKE_CXX_COMPILER /home/dmitry/synology/toolkit/build_env/ds.armada370-5.2/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-g++) SET(CMAKE_LINKER /home/dmitry/synology/toolkit/build_env/ds.armada370-5.2/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ld.gold) SET(CMAKE_FIND_ROOT_PATH /home/dmitry/synology/toolkit/build_env/ds.armada370-5.2/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

Дальше:

$ tar xvf wt-3.3.4.tar.gz $ cd wt-3.3.4 $ mkdir build $ cd build $ cmake -DCMAKE_TOOLCHAIN_FILE=~/toolchain-arm-marvell.cmake \

Теги: #synology #linux #C++ #C++
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.