Realtek 8723ドライバソースをコンパイルできません。

Realtek 8723ドライバソースをコンパイルできません。

私はレノボのアイデアパッドヨガ13を使用しています。 WLAN は Fedora 18 ではデフォルトでは機能しません。そのため、Googleで検索した結果、次の2つのリンクが見つかりました。

https://askubuntu.com/questions/139632/wireless-card-realtek-rtl8723ae-bt-is-not-recognized https://ask.fedoraproject.org/question/9633/i-can-not-get-my-realtek-8723-chip-to-work/

そのため、ソースコードをダウンロードし、gcc、kernel-header、kernel-devel、patchをインストールしました。 base.cで320行をコメントアウトしました。しかし、まだエラーが発生します。

make -C /lib/modules/3.8.9-200.fc18.x86_64/build M=/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012 modules
make[1]: Entering directory `/usr/src/kernels/3.8.9-200.fc18.x86_64'
  CC [M]  /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o
In file included from /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:39:0:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/pci.h:245:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_action_proc’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: error: ‘RX_FLAG_MACTIME_MPDU’ undeclared (first use in this function)
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: note: each undeclared identifier is reported only once for each function it appears in
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_send_smps_action’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1432:16: error: ‘struct <anonymous>’ has no member named ‘sta’
make[2]: *** [/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o] Error 1
make[1]: *** [_module_/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.8.9-200.fc18.x86_64'
make: *** [all] Error 2

pci.hの行245は次のとおりです。

int __devinit rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);

はい、一般ユーザーとrootで試してみました。

私の質問は、これをコンパイルする方法や修正する必要があります。

答え1

したがって、解決策は非常に簡単です。最新のソースを入手してください。 https://github.com/lwfinger

製作と設置

したがって、これはrealtek-8723に適しています。

私はそれについて小さなブログ投稿を書いた - >http://l33tsource.com/blog/2013/05/08/Yoga-with-WLAN.html

答え2

__devinitマクロだと思います。3.8のカーネルから削除されましたrtl8192ce各インスタンス(ドライバディレクトリごとに1つ)からすべてのインスタンスを削除して削除し、同じソースツリーからドライバをコンパイルしてロードしました。__devinitpci.hpci.c__devinitdatasw.c

ソースルートディレクトリのAには、grep -R __devinit変更する必要があるすべてのファイルが表示されます。

答え3

これを試してみましたか?

int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);

答え4

Fedoraにはかなり新しいカーネルがあり、通常、フローティングドライバソースは古いカーネルバージョン用です。必要なカーネルバージョンを確認し、Fedoraフォーラムを読んで、関連するバグレポートを確認し、カーネルハッカーが提供する非公式ドライバを探します(いいえベンダーは、1つのソースコードがさまざまなカーネルバージョンで動作できるという錯覚に陥ることがよくあり、他のベンダーは名前のない別のシステムのソースコードの塊を基本Linuxドライバと一緒に表面に振りかけます。同様に、両方を試すことは絶望的な異端です。 。

関連情報