Сообщество - Arduino & Pi
Добавить пост

Arduino & Pi

1 378 постов 20 576 подписчиков

Популярные теги в сообществе:

Немного про кросс-компиляцию в linux

Кросс-компиляция - это процесс создания исполняемых файлов для платформы, отличной от той, на которой происходит компиляция. Например, ты можешь кросс-компилировать программу на C++ в Linux для запуска на Windows или Android.

Немного про кросс-компиляцию в linux Linux, Программирование, IT, Программист

Для этого тебе нужно иметь:

  • Компилятор, который может генерировать машинный код для целевого процессора. Например, clang или gcc.

  • Компоновщик, который может создавать исполняемые файлы в формате, поддерживаемом целевой операционной системой. Например, ld или lld.

  • Библиотеки и заголовочные файлы, которые соответствуют API целевой операционной системы. Например, glibc или musl для Linux и mingw-w64 для Windows3.

Для установки и настройки этих инструментов ты можешь использовать различные способы, в зависимости от твоего хоста и цели. Например, ты можешь скачать готовые пакеты кросс-компиляторов из репозиториев твоего дистрибутива Linux, собрать их самостоятельно из исходного кода или использовать специальные средства, такие как Buildroot или crosstool-NG, которые автоматизируют процесс сборки кросс-компиляционной среды.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Про системные потоки в Linux

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

Про системные потоки в Linux Технологии, Linux, Программирование, IT

Один из стандартов для работы с системными потоками в Linux - это POSIX Threads (Pthreads), который определяет набор функций и типов данных для создания, управления и синхронизации потоков. Pthreads поддерживается большинством современных компиляторов C и C++ в Linux. Для использования Pthreads необходимо подключить заголовочный файл <pthread.h> и добавить флаг -lpthread при компиляции.

Для мониторинга системных потоков в Linux можно использовать различные инструменты, такие как top, htop, ps, pstree и другие. Эти инструменты позволяют просматривать информацию о процессах и потоках, такую как идентификаторы, приоритеты, состояния, использование ресурсов и т.д.

Несколько интересных фактов:

  • Системные потоки в Linux не отличаются от процессов с точки зрения ядра. Они имеют одинаковую структуру данных task_struct, которая хранит всю информацию о потоке или процессе. Разница между потоками и процессами заключается в том, что потоки совместно используют некоторые ресурсы, такие как адресное пространство, файловые дескрипторы и сигналы.

  • Системные потоки в Linux поддерживают модель N:1, 1:1 и M:N2. Это означает, что можно создавать многоуровневые потоки, которые сочетают в себе преимущества пользовательских и ядерных потоков. Модель N:1 означает, что несколько пользовательских потоков могут быть отображены на один ядерный поток. Модель 1:1 означает, что каждый пользовательский поток соответствует одному ядерному потоку. Модель M:N означает, что M пользовательских потоков могут быть отображены на N ядерных потоков.

  • Системные потоки в Linux могут иметь разные приоритеты и политики планирования. Приоритет - это число от 1 до 99, которое определяет, как часто поток должен получать процессорное время. Политика планирования - это алгоритм, который определяет, какой поток должен быть выбран для выполнения. Существуют три основные политики планирования для системных потоков в Linux: SCHED_OTHER, SCHED_FIFO и SCHED_RR. SCHED_OTHER - это стандартная политика для обычных процессов. SCHED_FIFO - это политика для реального времени, которая дает потоку высшего приоритета выполняться до тех пор, пока он не завершится или не заблокируется. SCHED_RR - это политика для реального времени, которая дает потоку высшего приоритета выполняться на определенный квант времени, а затем переключается на следующий поток с таким же приоритетом.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1

ChatGPT пишет Ардуино проекты!

Динамическая подсветка скейта своими руками

Интересные факты про файловую систему Linux

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

Интересные факты про файловую систему Linux Linux, Программирование, Операционная система, IT, Программист
  • Структура директорий. В Linux все файлы и каталоги расположены внутри одной корневой директории, обозначаемой символом /. В Windows же существуют разные логические диски, обозначаемые буквами, например C:, D: и т.д.

  • Чувствительность к регистру. В Linux имена файлов и каталогов различаются по регистру букв, то есть file.txt и File.txt - это два разных файла. В Windows же регистр букв не имеет значения, то есть file.txt и File.txt - это один и тот же файл.

  • Обратные слеши против прямых слешей. В Linux для разделения каталогов в пути к файлу используется прямой слеш /, например /home/user/Documents/file.txt. В Windows же используется обратный слеш \, например C:\Users\User\Documents\file.txt.

  • Нет букв дисков - всё находится в /. В Linux для доступа к содержимому других устройств хранения данных, таких как разделы жесткого диска, флешки, CD-ROM и т.д., используется операция монтирования, которая присоединяет устройство к определенному месту в дереве каталогов, называемому точкой монтирования. Например, раздел жесткого диска может быть примонтирован к каталогу /media/data, а флешка - к каталогу /media/usb. В Windows же каждому устройству хранения данных присваивается своя буква диска, например D:, E: и т.д.

  • Всё - файлы. В Linux почти все сущности в системе представлены в виде файлов, включая устройства, процессы, потоки и т.д. Это позволяет работать с ними с помощью стандартных команд и инструментов для работы с файлами. Например, для получения информации о процессоре можно прочитать содержимое файла /proc/cpuinfo, а для записи данных на звуковое устройство можно использовать команду cat file.wav > /dev/audio.

  • Вы можете удалять или изменять открытые файлы. В Linux вы можете удалить или переименовать файл, даже если он используется какой-то программой. Это не повлияет на работу программы, так как она продолжит использовать старый файл до тех пор, пока не закроет его. В Windows же вы не сможете удалить или переименовать файл, если он открыт какой-то программой.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Интересные факты про массивы в C++

Массивы в C++ - это одна из основных структур данных, которая позволяет хранить и обрабатывать множество однотипных значений. Массивы в C++ имеют много интересных фактов и особенностей, которые могут быть полезны для изучения и практики.

Интересные факты про массивы в C++ Программирование, C++, Программист, IT, Разработка
  • Массивы в C++ имеют фиксированный размер, который должен быть известен на этапе компиляции. Это означает, что нельзя динамически изменять размер массива или присваивать один массив другому. Для работы с динамическими массивами нужно использовать указатели и операторы new и delete, либо стандартные контейнеры, такие как std::vector или std::array.

  • Массивы в C++ являются непрерывными блоками памяти, в которых элементы расположены последовательно. Это позволяет быстро обращаться к элементам по индексу, но также ограничивает количество доступной памяти для массива. Кроме того, это означает, что имя массива является константным указателем на его первый элемент, поэтому можно использовать арифметику указателей для работы с массивами.

  • Массивы в C++ могут иметь несколько размерностей, то есть быть многомерными. Многомерные массивы представляют собой массивы массивов, которые могут использоваться для моделирования матриц, таблиц, сеток и других структур. Для объявления многомерного массива нужно указать количество элементов в каждой размерности в квадратных скобках.

  • Массивы в C++ поддерживают различные способы инициализации, которые позволяют задавать значения элементов при объявлении массива. Для этого можно использовать фигурные скобки и перечислить значения через запятую6. Например, int numbers5 = {1, 2, 3, 4, 5} - это одномерный массив из пяти целых чисел. Если количество значений меньше размера массива, то оставшиеся элементы будут заполнены нулями. Если количество значений больше размера массива, то компилятор выдаст ошибку. Также можно опустить размер массива и позволить компилятору вывести его из количества значений. Например, int numbers[] = {1, 2, 3} - это эквивалентно int numbers[3] = {1, 2, 3}.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Немного про работу с памятью в С

Память в С - это важная тема, которая связана с управлением ресурсами компьютера. Язык программирования C имеет свои особенности, связанные с работой с памятью.

Немного про работу с памятью в С Программирование, Язык, Память, Программист, IT

Вот некоторые из них:

  • В C нет автоматического управления памятью, как в некоторых других языках. Программист должен самостоятельно выделять и освобождать память с помощью функций malloc и free.

  • В C есть два типа памяти: статическая и динамическая. Статическая память выделяется на этапе компиляции и не меняется во время выполнения программы. Динамическая память выделяется во время выполнения программы и может изменяться по мере необходимости.

  • В C есть четыре области видимости переменных: локальная, глобальная, статическая и регистровая. Локальные переменные объявляются внутри функций и доступны только в них. Глобальные переменные объявляются вне функций и доступны в любой части программы. Статические переменные сохраняют свое значение между вызовами функций. Регистровые переменные хранятся в регистрах процессора для быстрого доступа.

  • В C есть два способа передачи аргументов в функции: по значению и по ссылке. При передаче по значению копируется значение аргумента, а при передаче по ссылке передается адрес аргумента в памяти. Передача по ссылке позволяет изменять значение аргумента внутри функции.

  • В C есть два типа указателей: обычные и константные. Обычные указатели могут менять свое значение и указывать на разные объекты в памяти. Константные указатели не могут менять свое значение и всегда указывают на один и тот же объект.

  • В C есть два способа работы с массивами: как с указателями и как с объектами. Массив можно рассматривать как указатель на его первый элемент, который можно инкрементировать или декрементировать для доступа к другим элементам. Массив также можно рассматривать как объект, который имеет фиксированный размер и не может быть присвоен другому массиву.

  • В C есть два способа работы со строками: как с массивами символов и как с указателями на символы. Строка может быть представлена как массив символов, заканчивающийся нулевым символом ‘\0’. Строка также может быть представлена как указатель на первый символ строки, который можно использовать для перебора символов до нулевого.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1

Оживил советскую игрушку

Показать полностью 1
Отличная работа, все прочитано!