1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/alios-things-mbedtls

Клонировать/Скачать
README.mbedtls.md 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 23.05.2025 22:04 50c4b6a

README для Mbed TLS

Конфигурация

Mbed TLS должен собираться без проблем на большинстве систем. Некоторые платформозависимые опции доступны в полностью документированном файле конфигурации include/mbedtls/config.h, который также является местом выбора функций. Этот файл можно редактировать вручную или в более программном порядке с помощью Perl-скрипта scripts/config.pl (используйте --help для инструкций по использованию).

Параметры компилятора можно задать с помощью традиционных переменных окружения, таких как CC и CFLAGS, при использовании системы сборки Make и CMake (см. ниже).

Сборка

В настоящее время используются три активные системы сборки в Mbed TLS:

  • GNU Make
  • CMake
  • Microsoft Visual Studio (Microsoft Visual Studio 2010 или более поздняя версия)

Основные системы, используемые для разработки, — это CMake и GNU Make. Эти системы всегда полные и актуальные. Другие системы должны отражать все изменения, присутствующие в системах сборки CMake и Make, хотя функции могут не переноситься туда автоматически.Системы сборки Make и CMake создают три библиотеки: libmbedcrypto, libmbedx509 и libmbedtls. Обратите внимание, что libmbedtls зависит от libmbedx509 и libmbedcrypto, а libmbedx509 зависит от libmbedcrypto. В результате некоторые линковщики будут ожидать, что флаги будут в определенном порядке, например, GNU линковщик требует -lmbedtls -lmbedx509 -lmbedcrypto. Также, при загрузке динамически подключаемых библиотек с помощью dlopen(), вам потребуется загрузить libmbedcrypto первым, затем libmbedx509, прежде чем вы сможете загрузить libmbedtls.### Настройка сборки

Мы требуем GNU Make. Для сборки библиотеки и образцов программ достаточно GNU Make и C-компилятора. Некоторые более продвинутые цели сборки требуют некоторых Unix/Linux-инструментов.

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

Чтобы собрать из исходного кода с помощью GNU Make, просто введите в командной строке:

make

Чтобы запустить тесты, введите:

make check

Тесты требуют Perl для сборки и выполнения. Если у вас не установлен Perl, вы можете пропустить сборку тестов с помощью:

make no_test

Вы всё ещё сможете запустить значительно меньший набор тестов с помощью:

programs/test/selftest

Чтобы собрать для платформы Windows, вы должны использовать WINDOWS_BUILD=1, если целевая платформа — Windows, но среда сборки Unix-подобная (например, при кросс-сборке или сборке из оболочки MSYS), и WINDOWS=1, если среда сборки — оболочка Windows (например, используя mingw32-make) (в этом случае некоторые цели не будут доступны).Задание переменной SHARED в вашей среде позволит собрать динамические библиотеки, а также статические. Задание DEBUG даст вам отладочную сборку. Вы можете переопределить CFLAGS и LDFLAGS, задав их в вашей среде или на командной строке при выполнении make; опции предупреждений компилятора могут быть переопределены отдельно с помощью WARNING_CFLAGS. Некоторые опции, специфичные для директорий (например, -I директивы), всё ещё сохраняются.Обратите внимание, что задание CFLAGS переопределяет её значение по умолчанию -O2, а задание WARNING_CFLAGS переопределяет её значение по умолчанию (начинающееся с -Wall -W), поэтому, если вы хотите добавить какие-то опции предупреждений к значениям по умолчанию, вы можете сделать это, задав CFLAGS=-O2 -Werror, например. Задание WARNING_CFLAGS полезно, если вы хотите удалить содержимое по умолчанию (например, потому что ваш компилятор не принимает -Wall как опцию). Опции, специфичные для директорий, не могут быть переопределены с командной строки.

В зависимости от вашей платформы, вы можете столкнуться с некоторыми проблемами. Пожалуйста, проверьте файлы Makefile в library/, programs/ и tests/ для опций, которые можно добавить или удалить вручную для конкретных платформ. Вы также можете проверить Mbed TLS Knowledge Base для статей по вашей платформе или проблеме.

В случае, если вы обнаружите, что вам нужно сделать что-то ещё, пожалуйста, сообщите нам, что именно, чтобы мы могли добавить это в Mbed TLS Knowledge Base.

CMake

Чтобы собрать исходный код с помощью CMake в отдельной директории (рекомендуется), просто выполните следующие команды в командной строке:

mkdir /путь/к/build_dir && cd /путь/к/build_dir
cmake /путь/к/mbedtls_source
make

Чтобы запустить тесты, выполните: make test

Наборы тестов требуют Perl для сборки. Если у вас не установлен Perl, вы захотите отключить наборы тестов с помощью:

cmake -DENABLE_TESTING=Off /путь/к/каталогу/mbedtls_source

Если вы отключили наборы тестов, но оставили программы включенными, вы всё ещё можете запустить гораздо меньший набор тестов с помощью:

programs/test/selftest

Чтобы настроить CMake для сборки динамических библиотек, используйте:

cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On /путь/к/каталогу/mbedtls_source

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

  • Debug. Этот режим генерирует отладочную информацию и отключает оптимизацию кода.

  • Coverage. Этот режим генерирует информацию о покрытии кода в дополнение к отладочной информации.

  • ASan. Этот режим инструментирует код с помощью AddressSanitizer для проверки ошибок памяти. (Этот режим включает LeakSanitizer с недавними версиями gcc и clang.) (С недавними версиями clang этот режим также инструментирует код с помощью UndefinedSanitizer для проверки неопределённого поведения.)

  • ASanDbg. Тот же режим, что и ASan, но более медленный, с отладочной информацией и более подробными трассами стека.

  • MemSan. Этот режим инструментирует код с помощью MemorySanitizer для проверки чтения неподтверждённой памяти. Экспериментальный, требует недавней версии clang на Linux/x86_64.

  • MemSanDbg. Тот же режим, что и MemSan, но более медленный, с отладочной информацией, более подробными трассами стека и отслеживанием источника.

  • Check. Этот режим активирует предупреждения компилятора, которые зависят от оптимизации, и рассматривает все предупреждения как ошибки.Переключение режимов сборки в CMake простое. Для режима отладки введите в командной строке:

    cmake -D CMAKE_BUILD_TYPE=Debug /путь/к/каталогу/mbedtls_source

Чтобы перечислить другие доступные опции CMake, используйте:

cmake -LH

Обратите внимание, что с CMake вы не можете изменять компилятор или его флаги после первой команды cmake. Это означает, что CC=ваш_компилятор make и make CC=ваш_компилятор не будут работать (аналогично с CFLAGS и другими переменными). Эти переменные нужно настроить при первом вызове cmake, например:

CC=ваш_компилятор cmake /путь/к/каталогу/mbedtls_source

Если вы уже вызвали cmake и хотите изменить эти настройки, вам нужно удалить каталог сборки и создать его снова.

Обратите внимание, что возможно выполнить сборку на месте; это, однако, перезапишет предоставленные Makefiles (см. scripts/tmp_ignore_makefiles.sh, если вы хотите предотвратить отображение их как изменённых при выполнении git status). Чтобы сделать это, из каталога исходного кода Mbed TLS, используйте:

cmake .
make

Если вы хотите изменить CC или CFLAGS позже, вам потребуется удалить кэш CMake. Это можно сделать с помощью следующей команды с использованием GNU find:

find . -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} +

Теперь вы можете сделать желаемое изменение:

CC=ваш_компилятор cmake .
makeЧто касается переменных, обратите внимание, что если вы зададите CFLAGS при вызове cmake, ваше значение CFLAGS не переопределит содержимое, предоставленное cmake (в зависимости от режима сборки, как указано выше), оно просто добавляется в начало.### Microsoft Visual Studio

Файлы сборки для Microsoft Visual Studio создаются для Visual Studio 2010.

Файл решения mbedTLS.sln содержит все необходимые базовые проекты для сборки библиотеки и всех программ. Файлы в папке tests не создаются и не компилируются, так как для них требуется среда Perl. Однако, программа selftest в папке programs/test/ всё ещё доступна.

Примерные программы

Мы включили примерные программы для многих различных функций и применений в папке programs/. Большинство программ сосредоточены на одной функции или сценарии использования, поэтому имейте это в виду при копировании частей кода.

Тесты

Mbed TLS включает в себя подробный набор тестов в папке tests/, который вначале требует Perl для генерации файлов тестов (например, test_suite_mpi.c). Эти файлы создаются из файла функций (например, suites/test_suite_mpi.function) и файла данных (например, suites/test_suite_mpi.data). Файл функций содержит тестовые функции. Файл данных содержит тестовые случаи, указанные как параметры, которые будут переданы тестовой функции.

Для машин с Unix-подобной оболочкой и OpenSSL (и опционально GnuTLS) установленными, доступны дополнительные тестовые скрипты:- tests/ssl-opt.sh выполняет интеграционные тесты для различных опций TLS (переучет, восстановление и т.д.) и проверяет совместимость этих опций с другими реализациями.

  • tests/compat.sh проверяет совместимость каждого шифр-состава с другими реализациями.
  • tests/scripts/test-ref-configs.pl проверяет сборки в различных уменьшенных конфигурациях.
  • tests/scripts/key-exchanges.pl проверяет сборки в конфигурациях с одним активированным обменом ключей.
  • tests/scripts/all.sh выполняет комбинацию вышеупомянутых тестов, а также некоторых других, с различными опциями сборки (например, ASan, полный config.h и т.д.). Конфигурации -------------Мы предоставляем некоторые нестандартные конфигурации, сосредоточенные на конкретных сценариях использования в директории configs/. Вы можете узнать больше о них в файле configs/README.txt.

Перенос Mbed TLS

Mbed TLS может быть перенесен на множество различных архитектур, операционных систем и платформ. Перед началом переноса вы можете найти полезными следующие статьи базы знаний:

Участие в проекте

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

  • Мы просим, чтобы вклады соответствовали нашим стандартам программирования, и чтобы вклады были полностью протестированы перед подачей.
  • Как и в любом проекте с открытым исходным кодом, вклады будут проверены командой проекта и сообществом, и могут потребовать некоторых изменений для принятия.Для принятия Соглашения о лицензии для участников (CLA), индивидуальные участники могут это сделать, создав учетную запись Mbed и подписав онлайн-соглашение здесь с помощью одного клика. В качестве альтернативы, для вкладов от корпораций или тех, кто не хочет создавать учетную запись Mbed, можно найти схожее соглашение здесь. Это соглашение должно быть подписано и возвращено Arm в соответствии с инструкциями, предоставленными.

Делая Вклад

  1. Проверьте открытые вопросы или начните обсуждение вокруг идеи функциональности или ошибки.
  2. Создайте форк репозитория Mbed TLS на GitHub, чтобы начать вносить изменения. В общем, следует использовать ветку "development" в качестве основы.
  3. Напишите тест, который покажет, что ошибка была исправлена или что функциональность работает так, как ожидалось.
  4. Отправьте pull request и напоминайте нам, пока ваш запрос не будет включен и опубликован. Вклады могут потребовать некоторых изменений, поэтому работайте вместе с нами, чтобы получить ваш вклад принят. Мы включим ваше имя в ChangeLog :)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/alios-things-mbedtls.git
git@api.gitlife.ru:oschina-mirror/alios-things-mbedtls.git
oschina-mirror
alios-things-mbedtls
alios-things-mbedtls
master