|
| 1 | +# wolfSentryのビルド |
| 2 | + |
| 3 | +wolfSentry は移植性を念頭に置いて作成されており、通常、ほとんどのシステムで簡単に構築できるはずです。 もしも |
| 4 | +wolfSentry の構築に問題がある場合は、遠慮なくサポート フォーラムを通じてサポートを求めてください。 |
| 5 | +( <https://www.wolfssl.com/forums>) または [[email protected]](mailto:[email protected]) まで直接お問い合わせください。 |
| 6 | + |
| 7 | +## wolfSentry ソースコードの取得 |
| 8 | + |
| 9 | +wolfSentry の最新バージョンは、wolfSSL Web サイトから ZIP ファイルとしてダウンロードできます。 |
| 10 | + |
| 11 | +<https://wolfssl.jp/download/> |
| 12 | + |
| 13 | +ZIP ファイルをダウンロードしたら、「unzip」コマンドを使用してファイルを解凍します。 ネイティブの行末を使用するには、 |
| 14 | +unzip を使用する場合は、`-a` 修飾子を有効にします。 unzip のマニュアル ページから、`-a` 修飾子の機能は次のように説明されています: |
| 15 | + |
| 16 | +> -a オプションを使用すると、zip によってテキスト ファイルとして識別されるファイル (zipinfo リストで「b」ではなく「t」ラベルが付いているファイル) が自動的に抽出され、行末、ファイル終了文字、および文字が変換されます。 必要に応じて設定します。 |
| 17 | +> リスト、'b' ではなく) そのように自動的に抽出され、行末を変換し、end- |
| 18 | +> ファイルの文字と、必要に応じて文字セット自体。 [...] |
| 19 | +
|
| 20 | +## 依存関係 |
| 21 | + |
| 22 | +デフォルトのビルドでは、wolfSentry は POSIX ランタイム、特にヒープ アロケータ、clock_gettime、stdio、セマフォ、および文字列 API に依存しています。 ただし、これらの依存関係は、さまざまなビルド時のオプションで回避できます。 特に、次の指定を用いると: |
| 23 | + |
| 24 | +```sh |
| 25 | +make STATIC=1 SINGLETHREADED=1 NO_STDIO=1 EXTRA_CFLAGS='-DWOLFSENTRY_NO_CLOCK_BUILTIN -DWOLFSENTRY_NO_MALLOC_BUILTIN' |
| 26 | +``` |
| 27 | + |
| 28 | +少数の基本的な文字列関数のみに依存する libwolfsentry.a を生成します。 次に、アロケータと時間のコールバックを wolfsentry_init() に渡される wolfsentry_host_platform_interface構造体に`設定する必要があります。 |
| 29 | + |
| 30 | +## ビルドとテスト |
| 31 | + |
| 32 | +GNU Make をサポートするプラットフォームでは、`make` を実行すると、通常どおり wolfSentry がビルドされます。 他のプラットフォームでは、`src` ディレクトリとその `json` サブディレクトリにある C ファイルを使用してコンパイルする必要があります。 |
| 33 | + |
| 34 | +テスト スイートをビルドして実行するには、`make -j test` または `make V=1 -j test` を詳細に使用できます。 |
| 35 | + |
| 36 | + |
| 37 | +### ビルド オプション |
| 38 | + |
| 39 | +`make` に追加できるいくつかのフラグと、ヘッダー ファイルまたは `CFLAGS` のいずれかでビルド時の定義として使用されるフラグがあります。 `make` フラグを使用するには、以下を使用できます。 |
| 40 | + |
| 41 | +```sh |
| 42 | +make SINGLETHREADED=1 EXTRA_CFLAGS='-DWOLFSENTRY_NO_CLOCK_BUILTIN' |
| 43 | +``` |
| 44 | + |
| 45 | +これらは、ビルド時に wolfSentry がビルドされる `wolfsentry_options.h` ファイルに保存されます。 `make` を使用していない場合は、次のテンプレートを使用してこのファイルを作成できます。 |
| 46 | + |
| 47 | +```c |
| 48 | +#ifndef WOLFSENTRY_OPTIONS_H |
| 49 | +#define WOLFSENTRY_OPTIONS_H |
| 50 | + |
| 51 | +#endif /* WOLFSENTRY_OPTIONS_H */ |
| 52 | +``` |
| 53 | + |
| 54 | +次の表に、可能なオプションを示します。 |
| 55 | + |
| 56 | +| | `make` オプション | 説明 | |
| 57 | +| | --------------| ------------| |
| 58 | +| | 'V' | 詳細な `make` 出力 | |
| 59 | +|| 例えば `make V=1 -j test`| |
| 60 | +| | `USER_MAKE_CONF` | 含めるユーザー定義の Makefile | |
| 61 | +|| 例えば `make -j USER_MAKE_CONF=Makefile.settings` | |
| 62 | +| | `SRC_TOP` | ソース コードの最上位ディレクトリ (デフォルトは「pwd -P」) | |
| 63 | +| | `BUILD_TOP`| 別の場所 (ソース ツリーの外部またはサブディレクトリ内) にアーティファクトを使用してビルドする | |
| 64 | +|| 例えば `make BUILD_TOP=./build -j test`| |
| 65 | +| | `デバッグ` | 使用するコンパイラ デバッグ フラグ (デフォルトは `-ggdb`) | |
| 66 | +| | オプティム | 使用するオプティマイザ フラグ (デフォルトは `-O3`) | |
| 67 | +| | `C_WARNFLAGS` | 使用する警告フラグ (デフォルト [^1] を参照) | |
| 68 | +| | NO_STDIO | プラットフォームに「STDIO」がありません | |
| 69 | +| | `NO_JSON` | JSON 構成サポートをコンパイルしないでください | |
| 70 | +| | `USER_SETTINGS_FILE`| インクルードする追加のヘッダー ファイル | |
| 71 | +| | `シングルヘッド` | シングル スレッドの使用にスレッド セーフ セマンティクスを使用しない | |
| 72 | +|| 例えば `make -j SINGLETHREADED=1 テスト` | |
| 73 | +| | `静的` | 静的バイナリをビルドする | |
| 74 | +| | 剥ぎ取られた | デバッグ シンボルのバイナリを削除 | |
| 75 | +| | `BUILD_DYNAMIC` | 動的ライブラリを構築 | |
| 76 | +| | `VERY_QUIET` | 非常に静かなビルドを有効にする | |
| 77 | +| | `TAR` | `make dist` の GNU tar バイナリへのパス。macOS では `gtar` に設定する必要があります | |
| 78 | +| | `バージョン` | コンパイルするバージョン番号 (デフォルトは [^2] を参照) | |
| 79 | + |
| 80 | +[^1]: `-Wall -Wextra -Werror -Wformat=2 -Winit-self -Wmissing-include-dirs -Wunknown-pragmas -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes -Wold-style-definition -Wmissing-declarations -Wmissing-format-attribute -Wpointer-arith -Woverlength-strings -Wredundant-decls -Winline -Winvalid-pch -Wdouble-promotion -Wvla -Wno-missing-field-initializers -Wno -bad-function-cast -Wno-type-limits` および GCC が使用されている場合は、`-Wjump-misses-init -Wlogical-op` の追加フラグが使用されます。 |
| 81 | + |
| 82 | +[^2]: `VERSION として定義:= $(shell git rev-parse --short=8 HEAD 2>/dev/null || echo xxxxxxxx)$(shell git diff --quiet 2>/dev/null | | [ $$? -ne 1 ] || echo "-dirty")` |
| 83 | + |
| 84 | + |
| 85 | +| プリプロセッサ マクロ | 説明 | |
| 86 | +| --- | --- | |
| 87 | +|`WOLFSENTRY_NO_STDIO` | プラットフォームに「STDIO」がありません | |
| 88 | +|`WOLFSENTRY_NO_JSON` | JSON 構成サポートをコンパイルしないでください | |
| 89 | +|`WOLFSENTRY_USER_SETTINGS_FILE` | インクルードする追加のヘッダー ファイル | |
| 90 | +|`WOLFSENTRY_SINGLETHREADED` | シングル スレッドの使用にスレッド セーフ セマンティクスを使用しない | |
| 91 | +|`CENTIJSON_USE_LOCALE` | JSON パーサーはロケール依存の文字を使用する必要があります | |
| 92 | +|`WOLFSENTRY_NO_PROTOCOL_NAMES` | 構成ファイルのプロトコル名のサポートを無効にする | |
| 93 | +|`DEBUG_JSON` | JSON パーサーにデバッグ `printf()` を追加 | |
| 94 | +|`WOLFSENTRY_NO_ERROR_STRINGS` | エラー文字列関数へのエラー コードを無効にする | |
| 95 | +|`WOLFSENTRY_NO_MALLOC_BUILTINS` | 組み込みの malloc 関数を無効にする | |
| 96 | +|`WOLFSENTRY_HAVE_NONGNU_ATOMICS` | アトミックは非 GNU です (`SINGLETHREADED` が設定されている場合は無視されます) | |
| 97 | +|`WOLFSENTRY_NO_CLOCK_BUILTIN` | Bulitin 時間関数を使用しないでください | |
| 98 | +|`WOLFSENTRY_LWIP` | wolfSentry は BSD ソケットではなく LWIP に対して構築されています | |
| 99 | +|`FREERTOS` | FreeRTOS サポートでビルド | |
| 100 | + |
| 101 | +### ビルドオプションの例 |
| 102 | + |
| 103 | +別のビルド場所から非標準の場所にインストールします。 |
| 104 | + |
| 105 | +```sh |
| 106 | +$make BUILD_TOP=./build INSTALL_DIR=/usr INSTALL_LIBDIR=/usr/lib64 インストール |
| 107 | +``` |
| 108 | + |
| 109 | +libwolfsentry.a をビルドし、さまざまなアナライザー (メモリとスレッド |
| 110 | +valgrind およびサニタイザー テストのフル バッテリー下でのテスト): |
| 111 | + |
| 112 | +```sh |
| 113 | +$make -j check |
| 114 | +``` |
| 115 | + |
| 116 | +マルチスレッドをサポートせずに libwolfsentry.a をビルドしてテストします。 |
| 117 | + |
| 118 | +```sh |
| 119 | +$make -j SINGLETHREADED=1 test |
| 120 | +``` |
| 121 | + |
| 122 | +その他の使用可能な make フラグは、「STATIC=1」、「STRIPPED=1」、「NO_JSON=1」、および |
| 123 | +「NO_JSON_DOM=1」、および「DEBUG」、「OPTIM」、および「C_WARNFLAGS」のデフォルト値 |
| 124 | +便利にオーバーライドすることもできます。 |
| 125 | + |
| 126 | +ユーザー提供の makefile プリアンブルを使用してビルドし、デフォルトをオーバーライドします。 |
| 127 | + |
| 128 | +```sh |
| 129 | +$make -j USER_MAKE_CONF=Makefile.settings |
| 130 | +``` |
| 131 | + |
| 132 | +(`Makefile.settings` には、`OPTIM := -Os` のような単純な設定を含めることができます。 |
| 133 | +追加の規則と依存メカニズムを含む、複雑な makefile コード)。 |
| 134 | + |
| 135 | +可能な限り最小で最も単純なライブラリを構築します。 |
| 136 | + |
| 137 | +```sh |
| 138 | +make -j SINGLETHREADED=1 NO_STDIO=1 DEBUG= OPTIM=-Os EXTRA_CFLAGS='-DWOLFSENTRY_NO_CLOCK_BUILTIN -DWOLFSENTRY_NO_MALLOC_BUILTIN -DWOLFSENTRY_NO_ERROR_STRINGS -Wno-error=inline -Wno-inline' |
| 139 | +``` |
| 140 | + |
| 141 | +ユーザー設定を使用してビルドおよびテストします。 |
| 142 | + |
| 143 | +```sh |
| 144 | +$make -j USER_SETT |
0 commit comments