質問: rtl8812auおよびrtl8814auネットワークドングルのdkmsドライバーが17.10(カーネル4.13)でビルドに失敗する rtl8812au(v4.3.14)およびrtl8814au(v4.3.21)usbワイヤレスネットワークドングル用のgithub dkmsカーネルドライバーがあり、17.04で正常に動作していましたが、17.10へのアップグレード中にビルドに失敗しました。両方のドライバーは同様のコードに基づいており、同様の方法でビルドできません。新しいgccコンパイラーなのか、それとも新しい4.13カーネルなのかは、問題を引き起こしているのかどうかわかりません。エラーを回避するには、makefileを微調整するだけでよい場合があります。通常のdkms add/build/installシーケンスの代わりに標準のmakeコマンドを使用すると、エラーがすぐにわかります。以下は、rtl8812auコードバージョン4.3.14のエラーです(現在のubuntuリポジトリで見つかったものよりも新しい)...user@satellite-e55:~/src/rtl8812au$ make make arch=x86_64 cross_compile= -c /lib/modules/4.13.0-16-generic/build m=/home/user/src/rtl8812au modules make[1]: entering directory '/usr/src/linux-headers-4.13.0-16-generic' cc [m] /home/user/src/rtl8812au/core/rtw_cmd.o in file included from /home/user/src/rtl8812au/include/drv_types.h:32:0, from /home/user/src/rtl8812au/core/rtw_cmd.c:22: /home/user/src/rtl8812au/include/osdep_service.h: in function ‘thread_enter’: /home/user/src/rtl8812au/include/osdep_service.h:343:2: error: implicit declaration of function ‘allow_signal’; did you mean ‘do_signal’? [-werror=implicit-function-declaration] allow_signal(sigterm); ^~~~~~~~~~~~ do_signal /home/user/src/rtl8812au/include/osdep_service.h: in function ‘flush_signals_thread’: /home/user/src/rtl8812au/include/osdep_service.h:353:6: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-werror=implicit-function-declaration] if (signal_pending (current)) ^~~~~~~~~~~~~~ timer_pending /home/user/src/rtl8812au/include/osdep_service.h:355:3: error: implicit declaration of function ‘flush_signals’; did you mean ‘do_signal’? [-werror=implicit-function-declaration] flush_signals(current); ^~~~~~~~~~~~~ do_signal cc1: some warnings being treated as errors scripts/makefile.build:302: recipe for target '/home/user/src/rtl8812au/core/rtw_cmd.o' failed make[2]: *** [/home/user/src/rtl8812au/core/rtw_cmd.o] error 1 makefile:1546: recipe for target '_module_/home/user/src/rtl8812au' failed make[1]: *** [_module_/home/user/src/rtl8812au] error 2 make[1]: leaving directory '/usr/src/linux-headers-4.13.0-16-generic' makefile:1576: recipe for target 'modules' failed make: *** [modules] error 2 user@satellite-e55:~/src/rtl8812au$ osdep_service.hで参照されるコードは次のようになります...#ifdef platform_linux #if (linux_version_code < kernel_version(3, 8, 0)) daemonize("%s", name); #endif allow_signal(sigterm); #endif #ifdef platform_freebsd printf("%s", "rtkthread_enter"); #endif } __inline static void flush_signals_thread(void) { #ifdef platform_linux if (signal_pending (current)) { flush_signals(current); } #endif rtl8814auのエラーとコードは似ているので、リクエスト/必要がない限り投稿しません。助けてください。ワイヤレスネットワークをオンラインに戻したいのですが。
回答: 私を正しい方向に向けてくれた@ chili555に感謝します。 git cloneリンクで参照されるrtl8814auドライバーは17.10で動作し、その同じ作成者は17.10でも動作するrtl8812auドライバーも動作します。メモリから...rtl8812au(edimax ew-7822uac)sudo git clone https://github.com/zebulon2/rtl8812au-driver-5.2.9.git note: dkms.conf file already included sudo cp -r rtl8812au-driver-5.2.9 /usr/src/rtl8812au-5.2.9 sudo dkms add rtl8812au/5.2.9 sudo dkms build rtl8812au/5.2.9 sudo dkms install rtl8812au/5.2.9 dkms status rtl8814au(edimax ew-7833uacおよびd-link dwa-192)sudo git clone https://github.com/zebulon2/rtl8814au.git create dkms.conf and add these lines... ---- # rtl8814au-4.3.21_17997.20160531 # # package_name="rtl8814au" package_version="4.3.21_17997.20160531" make[0]="'make' all kver=${kernelver}" built_module_name[0]="8814au" dest_module_location[0]="/updates/dkms" autoinstall="yes" remake_initrd="no" ---- sudo cp -r rtl8814au /usr/src/rtl8814au-4.3.21 sudo dkms add rtl8814au/4.3.21 sudo dkms build rtl8814au/4.3.21 sudo dkms install rtl8814au/4.3.21 dkms status