Author:
protochaos
Forum:
기타 질문/답변
Date: 2014-04-24
헐 칩셋이 다르군요.
그렇다면 소스 패치를 수동으로 해보세요.
어떤 것인가 하면, os/linux/rt_linux.c 파일을 열어
__RtmpOSFSInfoChange 부분을 찾으신 후,
static inline void __RtmpOSFSInfoChange(OS_FS_INFO * pOSFSInfo,
BOOLEAN bSet) {
if (bSet) {
/* Save uid and gid used for filesystem access. */
/* Set user and group to 0 (root) */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
pOSFSInfo->fsuid = current->fsuid;
pOSFSInfo->fsgid = current->fsgid;
current->fsuid = current->fsgid = 0;
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
pOSFSInfo->fsuid = current_fsuid().val;
pOSFSInfo->fsgid = current_fsgid().val;
#else
pOSFSInfo->fsuid = current_fsuid();
pOSFSInfo->fsgid = current_fsgid();
#endif
pOSFSInfo->fs = get_fs();
set_fs(KERNEL_DS);
} else {
set_fs(pOSFSInfo->fs);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
current->fsuid = pOSFSInfo->fsuid;
current->fsgid = pOSFSInfo->fsgid;
#endif
}
}
함수의 내용을 다음과 같이 바꿔주세요.
이 패치의 주내용은
current_fsuid()의 결과가 kuid_t 타입이고, current_fsgid() 함수의 결과가 kgid_t 타입인데,
이것이 모두 int 타입에서 struct 타입으로 변경되었고, 실제 값은 구조체의 val 멤버입니다.
그런데, 이것으로 컴파일이 될 것이라고 장담하지는 못합니다.
이유는 제가 이전 버전에서도 컴파일이 안되서 패치를 적용한 부분이 있기 때문입니다.