cでquine

これはズルですよね?

test.c

#include <stdio.h>
extern char _binary_test_c_start[];

int main(void)
{
  printf("%s",_binary_test_c_start);
}
$ objcopy --readonly-text -I binary -O elf32-i386 -B i386 test.c self.o
$ gcc -o test 
$ ./test
#include <stdio.h>
extern char _binary_test_c_start[];

int main(void)
{
  printf("%s",_binary_test_c_start);
}


objcopyはBinaryHacksに載ってました。
(自分自身のコードを埋め込むアイデアも載ってました)


普通のやつらの下を行け: objcopy で実行ファイルにデータを埋め込む - bkブログ
http://0xcc.net/blog/archives/000076.html


これを受けて自分自身のビルド環境やらchangelogやらを
tarボールにして埋め込んじゃうのは面白いかもしれない。


ちょっとしたツールの場合
バージョン毎のソース管理するの面倒だけど
これ、何だったっけ?っていう時に便利??