Команда make, сборка программ из файлов, ошибки.

Как сделать в Ubuntu, Linux. Команды Программы Справка.

Плотно связаться с пробной версией CD-ROM Ubuntu 20.04 Focal Fosse 2020, без установки на диск (загрузка с CD / DVD), как с одной из Linux подобных систем - меня вынудили шаловливые ручки, с целью проверить нерабочее ПО GPS мониторинга спутников для программно / ориентированного RTL SDR радио и попытаться запустить его на Линукс, так как все настройки программы - указывали на привязки к подобным системам ... И хотя мой опыт общения с Linux / Ubuntu - не нулевой, но он настолько мал и редок, что можно сказать, что его вообще - нет и нужно всему учиться заново ... После кошмара погружения в бездну и мракобесие Linux / C программирования с открытым исходным кодом, чревокопания в переменных, функциях и параметрах, чтения мануалов, хелпов, обсуждений и примеров реализаций - прокладка 220-ти вольтного провода, от распределительного щита электропитания, в кабель канале - покажется детской игрой в кубики, выполняемой одним мизинцем левой задней ноги ... Последнее время, наблюдая окружающий мир - замечаю поразительное маниакальное откровение : ничего не приходит само в руки ; любое серьезное занятие требует значительного вложения сил, труда, времени ; и только одна мен стру ация - приходит сама, никого не спрашивая ...

Самая краткая справка по командам Ubuntu / Linux.

Как открыть DOS / CMD подобное терминальное окно в новых графических Linux / Ubuntu ... How open command line terminal window ... Есть несколько путей, из простых - это сочетание клавиш CTRL + ALT + T или запуск из мозаики иконок открываемые с кнопки программ, с рабочего стола ... Рядом - иконка запуска простого текстового блокнота для быстрых записей без форматирования текста ...

Ubunty - кратко, как открыть окно теринала.

Как переключить язык ввода клавиатуры (иногда это называют раскладкой, но по моему это немного не то) ... How change keyboard language ... Использовать клавишу Windows (в Linux она называется по макинтошевски - Super) и пробел, то есть Win + Space ... Но прежде, чем это сочетание клавиш заработает - может случиться, так, что второго языка просто не будет установлено, например - при пробном открытии с диска CD / DVD, что вполне допускается в Linux подобных системах, загружаемых - практически с полной работоспособностью ... Чтобы исправить ситуацию с языками ввода с клавиатуры - нужно открыть настройки и внести некоторые улучшения в конфигурацию ...

Ubunty - кратко, как войти в настройки системы и оборудования.

Нужный язык ввода с клавиатуры - легко добавить парой движений мышью, и вверху справа - сразу же появится иконка, отображающая текущий выбор ...

Ubunty - кратко, как войти в настройки системы и оборудования.

Здесь, же, в настройках - можно очуметь на месте от 6-ти предложенных вариантов работы со скриншотом и, даже - легким способом записать короткий скринкаст ... Как сделать скриншот - помогут понять сочетания нажатия кнопок и горячие клавиши ... Картинки ложатся, в home / изображения (типа - в мои документы) ...

Ubunty - кратко, как войти в настройки системы и оборудования.

Особо задерживаться в настройках - нет смысла (все и так работает, даже без установки на жесткий диск), но парочку обязательных процедур, заодно - нужно выполнить ... Настроить интернет ... Подключить кабельный сетевой доступ или ввести пароль от своего Вай Фай роутера Wi-Fi ... Здесь же находится вкладка работы с Bluetooth, прямо как в смартфоне на Android ...

Ubunty - кратко, как включить и настроить сеть, WI-Fi и Bluetooth.

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

Ubunty - кратко, как настроить время, дату, часовой пояс.

Линуксоводы могут подумать, что это лучшее краткое руководство по Ubuntu - полная хрень, но они сильно и жестоко ошибаются ... Когда первый раз смотришь на непривычную и незнакомую операционную систему - в глазах все рябит и не знаешь на чем сосредоточиться ... Открываешь справку, и вот там - точно, хрень ... Кстати, о справке - мы еще поговорим ...

Но, пока, научившись открывать окно терминала - надо разобраться, как двигаться в этой среде ... Навигация по каталогам и файлам в окне терминала ... Как перейти в папку и вернуться обратно в корень ... Перейти в папку = cd folder ... Команда вернуться на уровень выше (назад) cd.. - не работает и рабочим вариантом будет - только cd .. (две точки подряд - обязательно через пробел от команды) ... А, также дополнительные полезности ... pwd - где находишься ... ls [LS] или dir - что находится в папке ... clear - очистить окно терминала командного процессора ... Вот, пожалуй, на первое время и - хватит ...

Установка программ в Ubuntu / Linux.

Установка программ в Ubuntu ... Как запустить install.sh ... Установить новую программу в Linux ориентированных системах можно следующими способами : через программный центр Ubuntu или менеджер пакетов Synaptic ... Обычно дистрибутивы Linux идут в архивах *.tar.gz с онлайн репозиториев (источников в интернете) ... Если используется путь прямой установки - сначала нужно скачать и разархивировать их ... Затем нужно сделать файл исполняемым : chmod +x install.sh ... В файле install.sh находятся dependent packages / dependencies = зависимые пакеты и требуемые для работы устанавливаемой программы - зависимости ... Также, внутри таких файлов - могут быть и команды установки самой программы ... Запустить инсталл на исполнение командой sudo ./install.sh (или, если не сработает : sudo bash install.sh) ... Однако, в большинстве случаев - адреса уже прописаны в инсталляторах и запуск файлов установщиков ПО - автоматически загружает и догружает необходимые пакеты для установки и работы избранных программ ...

Вообще, sh - это скрипт shell (оболочки), в котором описываются последовательно выполняемые команды ... После того, как скрипту назначили права исполняемости - его можно запустить, как программу - просто указав имя ./filename.sh в текущей директории / папке ; путь path/filename.sh ; указать права суперпользователя sudo ./filename.sh ; или указать конкретный интерпретатор, которому нужно запустить установочный файл = bash ./filename.sh ... Само расширение sh - вообще не имеет никакого значения для исполняемых файлов в Linux ... Запуск на исполнение происходит не по расширению, а по правам файла : r (чтение) 4 ; w (запись) 2 ; x (исполнение) 1 ; - (нет прав) 0 ... Права указываются : для владельца / группы / всех остальных , то есть rwx / rw - / r - - или 4+2+1 / 4+2+0 / 4+0+0 или 764 ...

Во время работы установщика зависимостей (пакетов) и программ - интернет должен работать, так как, Linux - в принципе не может ничего установить (доустановить или обновить) - без интернета, если нет локальных дистрибутивов, которые придется клепать вручную ...

Ubunty - кратко, предварительная установка зависимых пакетов из интернета.

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

Ubunty - кратко, инициализация и автоматическое согласование зависимостей программ.

Когда обновление и настройка системы будет закончена - можно продолжать дальше ... Я пытаюсь на Ubuntu запустить программу GNSS-SDRLIB (мониторинга GPS спутников) для RTL-SDR ... Начало и причины этой истории - прием сигналов GPS спутников ... Есть исходники, файл makefile чтобы их собрать в рабочую сборку и Linux среда, на которой (по моему представлению) - это должно компилироваться и выполняться ...

Только сейчас (при написании этой статьи) я задумался - а, почему макефиле, а не - готовый пакет ... Ведь, действительно - скачал готовую сборку и наслаждайся ... Ан, нет ... Linux - это не Windows ... Хотя и Windows грешит классовыми различиями программ (DOS, 95, 98, 2k, XP, 7, 8, 10) - нельзя не отметить, что качественно написанный мультиплатформенный код, не затрагивающий исключительных особенностей взаимодействия с ОС, редких и своеобразных инструкций процессоров и нетривиальных подходов к работе с памятью - будет работать (и замечу - прекрасно) на любой сборке Windows - без проблем ... Однако, Линукс подобные системы, как конкурирующие операционки с открытым исходным кодом, а потому - более многовариантны, вплоть до индивидуальных сборок NoName (под себя) - и могут испытывать определенного рода несовместимости, проявляемые, как то, что бинарный rpm-пакет, предназначенный для одной сборки - может не работать в других дистрибутивах ... Качественные мультиплатформенные пакеты требуют участия команды профессиональных программистов, а не частных кодеров, которые запросто могут не знать всех особенностей реализаций кода для отличных от его рабочей ОС и используемого компилятора (особо частые и больные проблемы - работа с памятью и национальные шрифты) ... Поэтому - удобно распространять, особенно редкие и специфичные программы (по желанию автора / разработчика) - в открытых исходных кодах, чтобы любой заинтересованный, легко и без особого труда - мог скомпилировать собственную версию рабочей программы на своей операционной оболочке, а то и - модифицировать ее в лучшую сторону или написать полезный плагин ... Процессом сборки / компиляции исходного кода - как раз и управляет специальный файл makefile для команды make, автоматизирующий компоновку файлов исходников - в рабочие программы ...

Нужно отредактировать makefile, чтобы указать, будет ли использоваться RTL-SDR или BladeRF радио донглы при сборке файлов программы : # 1:Use 0:Not Use ; USE_RTLSDR=1 ... После этого, в текущем каталоге - достаточно запустить команду make ... Она сама попытается найти makefile и выполнить все требуемые инструкции в одно касание ... В моем случае, неизмененного дистрибутива - произошла ошибка : не найден файл fftw3.h ...

Ubunty - кратко, make и makefile, ошибка компиляции программы из исходников.

Этот файл находится в папке GNSS-SDRLIB / lib / fft ... Где то, в путях - забыли прописать ... src / sdr.h:88:10 ... Файл сдр.н 88 строка, 10 позиция , будем посмотреть ... Для винды прописано с указанием пути : строчки 51, 52 ... #include fec / fec.h ... #include fft / fftw3.h ... А для линукс - почему-то, без пути , строчки 87, 88 ... #include fec.h ... #include fftw3.h ... Переписал строки с путями и все равно получил ошибку ... Как перезапустить make (программно сбросить после исправления кода) ... Дело в том, что каждый следующий запуск маке - отображает прошлую ошибку, которая уже была исправлена ... How to restart GNU make (without causing an error) ... Всякая куйня в поиске интернета ...

Требуется помощь, справка ... Как войти в справку ubuntu командного процессора : help - полный список справки командного процессора bash ... help function name - справка по конкретной функции из текущего списка команд bash ... man -k name или info name - мануалы по всем командам и программам, которых нет в списке командного процессора ... Специальные однобуквенные команды внутри самой справки : H - справка по командам справки ; h - главный экран справки ; q - выход из справки ...

Похоже, все дело - не в неправильных путях программного кода, а в ошибке путей инициализации программы make - она просто не видит нужных путей ... В частности путь lib / fec - есть, а lib / fft - нету, от этого и все проблемы ... В файле макефиле для команды маке прописаны настройки строки инициализации / конфигурации ...

Исполняемый код с экрана :

В виде переменных программного кода :

Становится понятно, что нужно (выше по коду) добавить переменную FFT=../../lib/fft и включить ее в глобальную директиву INCLUDE=-I$(SRC) -I$(RTKLIB) -I$(FEC) -I$(FFT) -I$(STEREO) -I$(RTLSDR) -I$(BLADERF) ...

Все исправления программного кода выполняются в пробной версии CD-ROM Ubuntu 20.04 Focal Fosse 2020, без установки на диск (загрузка с CD / DVD) ... Ничего не глючит, интернет - работает ... Вместо проприетарного (глючного) драйвера NVidia - автоматически был выбран X.org X-сервер - видеодрайвер Nouveau из xserver xorg video nouveau (Открытое ПО) ...

Снова запустив маке - убеждаемся, что исправив одну ошибку - автоматически натыкаемся на другую ... _mm_shuffle_epi8 - затребованная опция - не соответствует ... Одно дело - запустить Linux и исправить пути, другое - разобраться в багах чужого программного кода ... Что имелось ввиду ? ... _mm_shuffle_epi8 (__m128i __X, __m128i __Y) , вызов из файла src / sdrcmn.c ... Сбой функции, строка 1034 MIX_INT8(QQ,dat1,dat2,xsin,ind1,zero); ... По моему, это - АПОЖ ... Ошибка в коде фундаментальных функций, использующих SIMD множественные данные - через SSE2 инструкции процессора ...

Ползая по коду - случайно натолкнулся на лишний пробел в строке ... Проверил 146 найденных вхождений и удалил подозрительные пробелы перед скобкой - не помогло ... Почитал про опции маке и одна из них позволяет не останавливаться на первой ошибке, а - продолжать, насколько это возможно, чтобы выявить все файлы, которые не могут быть скомпилированы : make -k ... Были выявлены ошибки (строки) : 136-357 -1011 -1010 -1009 - 1008 -1034 -1033 ... Все - связанные с mm shuffle epi8 ...

Дополнительная информация для размышлений : Обязательные заголовки для СИМД (пропуск вызывает проблемы компилятора) или, по русски Ошибка компиляции GCC ...

MAKE OPTIONS, опции команд автоматизатора компиляции, русская справка.

У маке - есть конечно и еще несколько хитрых опций ... На большом компьютере, для удобства - форму можно растянуть на весь экран ... Как изменить размеры формы текстовой области : взять мышью за правый нижний угол и растянуть по желанию - на произвольный размер, в 2D направлении ... Сделано для удобства просмотра на мобильных девайсах и смартфонах ...

Знание и использование опций команды make - может быть недостаточно для полного управления процессом компиляции и создания исполняемых файлов - без понимания особенностей работы и опций настройки GCC компилятора ... Или, кратко - здесь : наиболее часто употребляемые опций компиляции и компоновки GCC ... Этого я не учел в своей попытке экспериментальной реанимации программы (это примечание было добавлено позже) ...

Проблемы обработки кода инструкций SIMD SSE2 SSE3.

Использование с командой make жутких наборов ключей, конечно же, ни к чему хорошему - не привело (см. пункт выше) ... Обратил внимание на файл правил обработки SSE2 rules : usr / lib / gcc / x86_x64-linux-gnu / 9 / include / emmintrin.h ... Я думал, что маке отображает ошибку - фиксируя где-то лог, а на самом деле - программа создает файлы в папке запуска (там, где макефиле) ... Софт - видит эти файлы, знает, что обновление не требуется и останавливается там, где не может идти дальше ... Обнулять / сбрасывать маке - не требуется ... Нужно устранять ошибки в коде ... Долго игрался с кодом и значениями, пока не убил файл в конец ... Однако понял одну вещь : в этой сборке используется файл соответствий правил : tmmintrin.h , который сразу охватывает и SSE3 ... Единственный совет при несовпадении аргументов функций - это применить : Adding -msse3 to the Makefile solved the problem, recommend ... А, также -march, опция выбора ISA ... Она говорит компилятору, что тот может использовать инструкции из ISA ... На платформе Intel / AMD64 с -march=native -O2 или более низким уровнем оптимизации, код будет (вероятнее всего) использовать инструкции AVX, но - с более короткими регистрами SSE XMM ... Чтобы полностью применить регистры AVX YMM : опции -ftree-vectorize, -O3 или -Ofast - должны быть использованы ... -ftree-vectorize - опция оптимизации (по умолчанию при -O3 и -Ofast), которая по возможности пытается векторизовать циклы, используя выбранную ISA ... Причина, по которой она не включена, при -O2 - она не всегда улучшает код, может также сделать его медленнее, и обычно делает код больше ; зависит от конкретного цикла и т.д. ...

Check CPU type , flag ...

-msse, -msse2, -msse3, -mmmx, -m3dnow ... Эти флаги разрешают наборы команд SIMD Extensions (SSE), SSE2, SSE3, MMX, и 3DNow! - для архитектур x86 и x86-64 ... Они используются, в основном - в мультимедиа, играх, и других вычислительных задачах с интенсивным использованием плавающей точки, хотя они также включают несколько других математических расширений ... Эти наборы команд предоставляются большинством современных процессоров ... Важно : убедитесь, что проверили поддерживает ли процессор эти наборы команд, введя команду cat /proc/cpuinfo ... Результат будет включать любые дополнительные наборы команд, которые поддерживаются ... Заметьте, что pni - это просто другое имя для SSE3 ... Обычно, нет необходимости добавлять какие-либо из этих флагов в /etc/portage/make.conf , пока в системе используется корректный параметр -march (например, -march=nocona подразумевает использование -msse3) ... Некоторые заметные исключения - новые процессоры VIA и AMD64, которые поддерживают инструкции, не включаемые параметром -march (такие, как SSE3) ... Для таких процессоров, нужно включить дополнительные флаги, где это необходимо, после проверки /proc/cpuinfo ...

В Макефиле - внагляк исправил строку 21 ... OPTIONS=-msse -msse2 -msse3 -mmmx -m3dnow -ftree-vectorize -DSSE2_ENABLE -DFFTMTX -DSTEREO -DSTEREOV26 OPTIONS=-DSSE_ENABLE -DSSE2_ENABLE -DSSE3_ENABLE -DMMX_ENABLE -D3DNOW_ENABLE -DFFTMTX -DSTEREO -DSTEREOV26 ... Включение -D3DNOW_ENABLE провоцирует неустановленную ошибку в потоке работы команд (убрал из строки флагов, от греха - подальше) ... (Ниже, по тексту - есть пояснение о работоспособности этих ключей) ...
Необходимо пересобрать цель : sdrcmn.o ...
Помещение потомка 0x564e90a51350 (sdrcmn.o) PID 22684 в цепочку потомков ...
Незавершённый потомок 0x564e90a51350 (sdrcmn.o) PID 22684 ...
Подбирается неудачно завершившийся потомок 0x564e90a51350 PID 22684 make: *** [makefile:53: sdrcmn.o] Ошибка 1 ...
Удаляется потомок 0x564e90a51350 PID 22684 из цепочки.

Ошибка перешла в Макефиле, строка 53 - проблема при компиляции ...
$(CC) -c $(CFLAGS) $(SRC)/sdrcmn.c ...
Или, по русски ... gcc -c -Wall -O3 -march=native $(INCLUDE) $(OPTIONS) -g ../../src/sdrcmn.c ...

Изменил опцию -03 to -Ofast ... Рассмотрел, что говорят детально о сбойной функции / опции mm shuffle epi8 в файле tmmintrin.h ... Копирует 8-битные целые числа из 128-битного целочисленного вектора в место назначения или очищает 8-битные значения в месте назначения, как указано вторым исходным операндом ... Эта внутренняя функция соответствует инструкции VPSHUFB ... Параметры ... __a 128-битный целочисленный вектор, содержащий значения для копирования ... __b 128-битный целочисленный вектор, содержащий управляющие байты, соответствующие позициям в месте назначения : Бит 7 ...

В коде - так и было написано : _mm_shuffle_epi8(mmx3,index) - если я не вру (по памяти) ... Почему не работает - ума не приложу (с виду - команда правильная, дело в значениях переменных ?) ... В конце концов - плюнул и подставил, строка : 357 _x=zero; ... Заколебало ... И, с этим вызовом - сразу все стало нормально (почему ?!?!?) ... Автоматом возникли новые ошибки ... /usr/bin/ld : невозможно найти -lfftw3f ... /usr/bin/ld : невозможно найти -lfftw3f_threads ... /usr/bin/ld : невозможно найти -lrtlsdr ... collect2 : error : ld returned 1 ... exit status : THIS DLL IN EXT *.a - отсутствует в архиве ... Проверил - действительно отсутствует (удалил запросы нафиг) ... Это спровоцировало новые ошибки ... /usr/bin/ld : sdrmain.o : undefined reference to symbol pthread_join@@GLIBC_2.2.5 ... /usr/bin/ld : /lib/x86_64-linux-gnu/libpthread.so.0 : ошибка добавления символов : DSO missing from command line ... collect2 : error : ld returned 1 exit status ...

Откуда взялся этот путь /usr/bin/ld - это файл, типа : разделяемая библиотека ... Кстати, экспериментируя со всем, чем можно и нельзя - я удивился, обнаружив команду, которую использовал автор программы : -DSSE2_ENABLE ... Возможно - это связано с версией компилятора, отличающегося от стандартного ... Я не заметил существенного влияния рекомендованных ключей : -msse -msse2 -msse3 -mmmx и поэтому позже заменил их на прототип, который использовал разработчик софта : -DSSE_ENABLE -DSSE2_ENABLE -DSSE3_ENABLE -DMMX_ENABLE и, по моему, такое представление - имело эффект на сборку кода, но не привело к положительным результатам ...

По окончании успешного процесса make - нужно было ввести команду : cd ../../bin (подняться / вернуться по вложениям каталогов - на два уровня вверх и перейти в папку BIN, где и нужно было запустить в работу ./gnss-sdrcli ... Но, так как у меня не получилось скомпилировать проект - я до этого места не дошел, не достигнув своих целей ... Однако - успел познакомился со сторонней операционной системой и достаточно интересным способом сборки программ на Linux / Ubuntu ... Кстати, почему именно - Ubuntu ... Просто - название этой операционной системы наиболее часто упоминалось с названием радио донгла RTL-SDR ... Уже через пару часов, еще немного путаясь, но уже вполне сносно - я управлялся с незнакомой мне операционной системой, постепенно привыкая к интерфейсу и ответной реакции ... Это - хороший повод вернуться и поиграть с компиляцией других, не таких математически (кодо / функционально) сложных программ, а также попробовать установить и изучить GNU Radio - популярный радио конструктор (в данной операционной среде), для которого есть большая подборка всевозможных доработок и хаков ... Наверняка есть и другие интересные программы ... Главное - не стоять на месте, чтобы место - не стояло на тебе ))) ...

Декабрь, 2020 ...

P.S. Примечание : Опа ! ... Вот это - нахлобучило ... А ведь я - так и не понял, с какой разрядностью загрузилась пробная версия Ubuntu ... Если, x32 - то только теперь дошло, почему не заработал код и посыпались ошибки : программа GNSS SDR CLI ориентирована только на x64 версии ОС ... Если, x64 - тогда я вообще не знаю в чем прикол (мыслей больше нет) ... (Стопэ, примечание : вообще-то - скачивалась именно x64 версия : ubuntu-20.04.1-desktop-amd64.iso) ... Мыслей - нет, а вопросы стали проявлятся, как кадры на фотопленке ... Откуда, собственно говоря - в проекте появилась libfftw3f-3.lib ? ... И где - требуемые *.a файлы ? ... Почему в путях присутствуют ошибки ? ... Такое ощущение, что проект остановился, где-то посередине модификации или был заброшен ... О полуфабрикатах, в России - говорят : "украден" не на той стадии (производства) ... Или - испорчено намеренно ... Жаль, интересная программа, серьезный и сложный проект ...

Популярные теги для сайта.

Самые популярные теги, краткое описание более 1000 страниц менее, чем в 100 ключевых словах ... Чтобы найти более подробную информацию, самое простое - использовать поиск по сайту на соответствующие запросу - ключевое слово или фразу ...

Decoder данных ... Авто ... Бесплатно онлайн ... Список ПК программ ... Россия ... Погода ... ЭБУ ... Sat ... Torrent tracker ... Работа двигателя ... На трассе и по маршруту ... Диагностика ... ЦУП ... УпрДор ... Метео ... Гидрометцентр ... Москва ... Екатеринбург ... Смотреть прогноз ... Расчет ... Калькулятор ... Онлайн ... Вeacon ... Calculator ... COVID ... ECU ... Meritor ... Motor ... OBD ... SDR ... Telemetry ... Tool ... USB ... Windows ... Радио ... Развлекательный сайт ... Новости сегодня ... Связь ... Ремонт ... Системы ... Сканер ... Состояние трассы ... Диагностика двигателя ... Длина волны ... Программы для компьютера ...

Быстрый поиск по сайту :


Популярное : ...

... Найти ... Как улучшить фото ... Делфи на Андроид ... Погода М-4, М-5, М-7, Р-22 ... Список торрент трекеров ... Калькулятор кода радио ... Частота в длину волны ... RTL SDR Radio ...

TechStop-Ekb.ru : познавательные развлечения, техника, технологии ... На сайте, для работы и соответствия спецификациям - используются ... Протокол HTTPS шифрования для безопасного соединения с сервером и защиты пользовательских данных ... Антивирус DrWeb для превентивной защиты пользователей от интернет угроз и вирусов ... Ресурс входит в рейтинги Рамблер Топ 100 (познавательно-развлекательные сайты) и Mail Top 100 (авто мото информация) ...

Тех Стоп Екб RU (РФ) официальный сайт, популярные темы, погода, новости, обзоры с картинками, бесплатно, актуально, без регистрации ... Смотреть утром, днем, вечером и ночью - круглосуточно онлайн ...

Меню раздела, новости и новые страницы.

... | ... ТехСтоп Екб ... | ... Главное меню ... | ... Быстрый поиск ... | ...


© 2021 Тех Остановка Екатеринбург, создаваемый с 2016++ с вами вместе навсегда бесплатно ...