2011. 6. 15.

mips Target Board에서 Webkit을 올릴 때의 난감한 상황 undefined reference to `sinf'

mips 칩이 저렴해서 인지 settop box나 ipTV나 멀티미디어 플레이어에서 많이 사용된다.
하지만 최근 들어 피해 갈 수 없는 대세인 모듈이 있으니, 두둥 그것은 webkit
QtWebkit을 올리려면 rendering을 하는 측에서 (예를 들어 line이나 curve 등을 그릴때)
sine 이나 cosine 같은 삼각 함수를 쓰게 되는데
오래된 싸구려 mips 칩에서는 이를 지원하지 않는다..
uClibc 0.9.28 이상에서는 floating math 함수들을 지원한다.
uClibc 0.9.27 이하에서는 floating math 함수들을 지원하지 않는다.

문제점으로는 qline이나 curve 함수들이 컴파일 시 Link 되지 않는다.
undefined reference to `sinf'
undefined reference to `cosf'
undefined reference to `logf'

이를 해결 하기 위한 임시 대응책

$QTDIR/src/corelib/kernel/qmath.h
에다가

inline float sinf( float s)
{
   return (float)sin(s);
}


inline float cosf( float s)
{
   return (float)cos(s);
}

inline float logf( float s)
{
   return (float)log(s);
}

추가함

절대적으로 임시 방편이며, 속도가 많이 느려진다... 특히 Animation
그냥 uClibc 0.9.28 이상을 사용하시길....
양산 후 library 절대 올리기 싫어 하는 경우도 있긴 하지만... 이해는 어렵다...털썩...


댓글 없음:

댓글 쓰기