はじめての wired
wired のプログラムは libc(C の標準ライブラリ)を使いません。
main も printf もありません。
代わりになるものを wired.h が用意しており、このページではそれだけを使う最小のプログラムを示します。
コード
#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;}実行結果
$ ./hellohello#include "wired.h"の前に#define WIRED_MAINを置くと、エントリポイント_startと、-nostdlibのバイナリが必要とするmemcpy/memsetが生成されます。 定義するのは 1 ファイルだけにします。_startはwired_main(argc, argv)を呼び、その戻り値が終了ステータスになります。wired_log_strは NUL 終端の文字列を標準エラー出力に書きます。
ビルドと実行
Section titled “ビルドと実行”SDK のアーカイブを一度ビルドし、それに対して自分のファイルをフリースタンディング(標準ライブラリに依存しない形)でコンパイルします。
just libclang -target x86_64-linux-gnu -ffreestanding -fno-stack-protector \ -fno-builtin -nostdlib -static \ -Isrc -o hello main.c build/libwired.a./helloこのガイドの他のページも、同じ手順でビルドできます。