コンテンツにスキップ

はじめての wired

wired のプログラムは libc(C の標準ライブラリ)を使いません。 main も printf もありません。 代わりになるものを wired.h が用意しており、このページではそれだけを使う最小のプログラムを示します。

コード

main.c
#define WIRED_MAIN /* this file provides _start, memcpy and memset */
#include "wired.h"
int wired_main(int argc, char** argv) {
(void)argc;
(void)argv;
wired_log_str("hello\n"); /* stderr */
return 0;
}

実行結果

Terminal window
$ ./hello
hello
  • #include "wired.h" の前に #define WIRED_MAIN を置くと、エントリポイント _start と、-nostdlib のバイナリが必要とする memcpy/memset が生成されます。 定義するのは 1 ファイルだけにします。
  • _start は wired_main(argc, argv) を呼び、その戻り値が終了ステータスになります。
  • wired_log_str は NUL 終端の文字列を標準エラー出力に書きます。

SDK のアーカイブを一度ビルドし、それに対して自分のファイルをフリースタンディング(標準ライブラリに依存しない形)でコンパイルします。

ターミナルウィンドウ
just lib
clang -target x86_64-linux-gnu -ffreestanding -fno-stack-protector \
-fno-builtin -nostdlib -static \
-Isrc -o hello main.c build/libwired.a
./hello

このガイドの他のページも、同じ手順でビルドできます。