Ralink RT2870のドライバーのコンパイルエラー


14

Kali Linuxにrosewill RNX-N600UBEワイヤレスカード(Ralink RT2870チップセット)のドライバーをインストールしようとしています。Webサイトからドライバーをダウンロードし、解凍/解凍しましたが、「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

あなたは何かの異なるバージョン、おそらくコンパイラが必要かもしれないと思う?
PlasmaPower 14

補足として、なぜLinuxの初心者がKaliをいじるのでしょうか?これは、低レベルのツールが満載されたセキュリティテストと攻撃のディストリビューションです。確かに未経験のLinuxユーザー向けではありません
MestreLion

回答:


19

問題は、最近の3.xカーネルでカーネルヘッダー/インターフェイスの1つが変更されたことです。UID / GID値が元々通常の整数と呼ばれていましたが、現在は単一の要素を持つ構造体です。古い定義に依存するコードは、新しいカーネルヘッダーに一致するように更新されるまで、コンパイルに失敗します。

現在、Ubuntuのインストール用にvirtualbox-guest-utilsで同様のエラーにパッチを当てています。理論的には、->i_uid =with ->i_uid.val =または->i_gid =withのインスタンスの検索と置換->i_gid.val =行番号の上には、問題を修正する必要があります(私は、この時点でコンパイルが今の私のために異なる、無関係な、エラーで失敗しているとことを保証することはできません)エラーで報告しました。

最善の策は、コードの元の作者に連絡して、新しいカーネルで動作するソースの更新バージョンを入手することです。


7
テスト済み!これは動作します!私は変更current_fsuid()current_fsuid().val
ジョナサン・

1
私にとっては、私も変更しなければならなかったcurrent_fsgid()current_fsgid().val
コードのように私

@JonathanLeaderstouchéありがとう。しかし、変換パッチintにはkuid_tまた、トリックを行うようです。
熱狂的な

10

このWebサイトの別のドライバーでコンパイルエラーの修正を見つけました: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;

1
これは、Mediatek / Ralink 148F:7601チップセットにも使用されているMT7601Uドライバーに適した有効なソリューションです。(はい、SEOの理由でこれらのキーワードを追加しています。)
billyjmc

Fedora 27上のカーネル4.13.16-302.fc27.x86_64では、これはもう機能しません。コンパイルエラーで失敗します。
kmonsoor

@billyjmc:現状では、このソリューションは< kuid_tおよび< kgid_tが導入された<3.5のカーネルでは機能しないことに注意してください。人のために、kのように、ドロップされなければならないuid_t fsuid;gid_t fsgid;
MestreLion

2

make エラーのみを報告しますが、実際にはコンパイラ(おそらくgcc)からのエラーです。

error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’ 

基本的に、コードはバグが多いか、プラットフォームに不適切ですが、make正しく機能します。


1

このソリューションは私のために働いた。私が従った手順は次のとおりです。

  1. ここから私のディストリビューション(Debian Jessie)の手順に従いました。

  2. メーカーのLinux用ドライバー(CDROMに付属)を保存し、フォルダーに解凍しました。

  3. フォルダーにmake(as root)と入力すると、エラーが発生しました。だから、私は上記の変更を行い、それが機能しました。

  4. make install(as root)と入力し、コンピューターを再起動すると、ワイヤレスインターフェイスが認識されました。私はそれを設定し、機能しました。;)

私のシステムは、gnomeを使用したDebian Jessie、カーネル3.16.0-4-amd64です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.