Kali Linux에 Rosewill RNX-N600UBE 무선 카드(Ralink RT2870 칩셋)용 드라이버를 설치하려고 합니다. 해당 웹사이트에서 드라이버를 다운로드하고 압축을 풀었지만 이제 "make" 명령을 실행하려고 하면 이 오류가 발생합니다.
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1156:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1157:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[4]: *** [/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.o] Error 1
make[3]: *** [_module_/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
답변1
문제는 최근 3.x 커널에서 커널 헤더/인터페이스 중 하나가 변경되었다는 것입니다. UID/GID 값은 원래 일반 정수라고 불렸지만 이제는 단일 요소를 가진 구조입니다. 이제 이전 정의에 의존하는 모든 코드는 새 커널 헤더와 일치하도록 업데이트될 때까지 컴파일되지 않습니다.
현재 Ubuntu 설치를 위해 virtualbox-guest-utils에서 유사한 버그를 패치하려고 합니다. 이론상으로는 오류에 보고된 줄 번호에서 ->i_uid =
with ->i_uid.val =
또는 with ->i_gid =
의 인스턴스를 찾아서 바꾸면 ->i_gid.val =
문제가 해결됩니다(하지만 그럴 수는 없습니다). 이 시점에서 관련 없는 다른 오류로 인해 컴파일이 실패했음을 보장합니다.
가장 좋은 방법은 코드의 원 작성자에게 연락하여 최신 커널에 대한 소스 코드의 업데이트된 버전을 얻는 것입니다.
답변2
이 사이트의 다른 드라이버에서 컴파일 오류에 대한 수정 사항을 찾았습니다. http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/
패치 내용은 다음과 같습니다.
--- include/os/rt_linux.h 2013-09-12 13:27:14.000000000 +0800
+++ include/os/rt_linux.h.patched 2014-03-23 11:45:03.907628847 +0800
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;
typedef struct _OS_FS_INFO_
{
- int fsuid;
- int fsgid;
+ kuid_t fsuid;
+ kgid_t fsgid;
mm_segment_t fs;
} OS_FS_INFO;
답변3
make
오류만 보고되지만 실제로는 컴파일러(아마도 gcc)의 오류입니다.
error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
기본적으로 코드는 버그가 있거나 플랫폼에 적합하지 않지만 make
정상적으로 작동합니다.
답변4
이 솔루션은 저에게 효과적입니다. 내가 따르는 절차는 다음과 같습니다.
내 배포판(Debian Jessie)의 단계를 따랐습니다.여기.
제조업체의 Linux 드라이버(CD에 장치에 포함되어 있음)를 저장하고 폴더에 압축을 풀었습니다.
make
해당 폴더에 (as )를 입력했는데root
오류가 발생했습니다. 그래서 위와 같이 수정했더니 효과가 있었습니다.make install
(예: ) 을 입력하고root
컴퓨터를 다시 시작했는데 무선 인터페이스가 인식되었습니다. 나는 그것을 구성했고 작동했습니다. ;)
내 시스템은 Debian Jessie, 커널 3.16.0-4-amd64, gnome을 사용합니다.