http://lists.gnu.org/archive/html/tinycc-devel/2003-06/msg00014.html
Linuxでも一筋縄ではいきませんな。
まずはtccelf.c内で/usr/lib/libc.soを読み込んでいるのですけど、ld scriptのパーズに失敗しているのよね。超adhocに修正してみました。
本当はld scriptの文法を調べて真剣にpatchを作らんとあかんと思うのですが・・・。
2312c2312,2347
< tcc_add_file(s1, filename);
>
> // support AS_NEEDED begin
> if (strcmp(filename, "AS_NEEDED") == 0)
> {
> t = ld_next(s1, filename, sizeof(filename));
> if (t == ',') {
> t = ld_next(s1, filename, sizeof(filename));
> }
> if (t != '(')
> expect("(");
> t = ld_next(s1, filename, sizeof(filename));
>
> for(;;) {
> if (t == LD_TOK_EOF) {
> error_noabort("unexpected end of file");
> return -1;
> } else if (t == ')') {
> break;
> } else if (t != LD_TOK_NAME) {
> printf("%d %s\n", LD_TOK_NAME, filename);
> error_noabort("filename expected");
> return -1;
> }
> tcc_add_file(s1, filename);
> t = ld_next(s1, filename, sizeof(filename));
> if (t == ',') {
> t = ld_next(s1, filename, sizeof(filename));
> }
> }
> }
> else
> {
> tcc_add_file(s1, filename);
> }
> // support AS_NEEDED end
>
ちなみにld scriptのフォーマットは以下の通りでいいのかなぁ。
http://www.kpitgnutools.com/manuals/ld.html#SEC12
色々TCCが対応していないフォーマットがありますな。
TCCの人々はあんまり動く気無さげ。ぬぅ・・・、ま、困った時に直せばいいか。