ということでこんなの書いた。既にあるだろうけど、再実装。
https://code.launchpad.net/~lovesyao/+junk/llvm-gcc-compat
使い方は/usr/local/llvm-gcc-compat辺りに移動して
export PATH=/usr/local/llvm-gcc-compat:$PATH gcc hello.c ./a.out
んで気が向いたら後で./a.out.bcからllcでnativeバイナリが作れる。ね、簡単でしょ?
実装としてはただのラッパ。gccはllvm-gcc -emit-llvmを呼び出す。stripは何もしない。ldは色々とオプションを黙って無視する(configure泣かせ)。
試しにffmpegをビルドしてみる。オプションは軽く./configure --enable-gpl --enable-swscaleで。
libavutil/common.hのav_clipのav_constを取る必要があったけど、無事ビルド完了。
cp ffplay_g ffplayのせいで./ffplayが動作しないが、まぁ./ffplay_gで良し。
動かしてみたがabort。
$ ./ffplay_g lli: X86CodeEmitter.cpp:493: void<unnamed>::Emitter::emitInstruction(const llvm::MachineInstr&, const llvm::TargetInstrDesc*): Assertion `(Value[0] == 0) && "JIT does not support inline asm!\n"' failed. lli[0x85980ea] /lib/tls/i686/cmov/libc.so.6(abort+0x188)[0xb7e2f248] /lib/tls/i686/cmov/libc.so.6(__assert_fail+0xee)[0xb7e2672e] lli[0x80f9398] Aborted
まぁそう簡単にはうまくいかんわなぁ。