Mbed TLS должен собираться без проблем на большинстве систем. Некоторые платформозависимые опции доступны в полностью документированном файле конфигурации include/mbedtls/config.h
, который также является местом выбора функций. Этот файл можно редактировать вручную или в более программном порядке с помощью Perl-скрипта scripts/config.pl
(используйте --help
для инструкций по использованию).
Параметры компилятора можно задать с помощью традиционных переменных окружения, таких как CC
и CFLAGS
, при использовании системы сборки Make и CMake (см. ниже).
В настоящее время используются три активные системы сборки в Mbed TLS:
Основные системы, используемые для разработки, — это 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 в отдельной директории (рекомендуется), просто выполните следующие команды в командной строке:
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 может быть перенесен на множество различных архитектур, операционных систем и платформ. Перед началом переноса вы можете найти полезными следующие статьи базы знаний:
Мы с благодарностью принимаем отчеты о багах и вклады от сообщества. Для интеграции вкладов необходимо выполнить некоторые требования:- Все вклады, независимо от их размера, требуют подписания Соглашения о лицензии для участников (CLA) для принятия. Это связано с тем, что исходный код может подпадать под действие закона об авторском праве, и нам требуется ваше согласие на совместное владение авторским правом.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )