iPod Linux と setjmp

iPod Linux で PNG や TrueType/OpenType を使いたいので libpng, FreeType をコンパイルしようと思ったのだけど、コンパイルは通るのに実行中にどうも落ちてしまう。調べたらどうも setjmp が原因らしい。

libpng のほうは -DPNG_SETJMP_NOT_SUPPORTED でコンパイルすると setjmp/longjmp を使わないようにできるのでなんとか成功。

FreeType のほうは setjmp を使わないというオプションがないのでどうしたもんだか。インターネットで uClinux arm setjmp で検索したところ uClinux-dev ML のログにそのものずばりの問題と解決方法を発見。どうも CVS のソースコードでは2年以上も前に直っている問題っぽい。一番いいのは最新コードで全部make し直すことだけど、現状の iPod Linux のバージョンと整合性がとれなくなっても嫌だしいろいろと必要なソースコードを揃えるのもめんどうなので setjmp がらみの部分のみコンパイルして libc.a の中身をすげ替えることにする。とりあえずこれで FreeType が使えるようになったみたい。つまり TrueType/OpenType の表示が可能(ヒラギノ角ゴ Pro W3 で検証)

MacOSX Arm-elf cross compiler(問題あり)
[uClinux Local Repository] uClinux-dist/uClibc/libc/sysdeps/linux/arm/(修正されている)
[uClinux-dev] subtle bug in arm version of setjmp/longjmp

Tags: ,

Comments are closed.