0
表演「讓」的時候,我非常接近編譯了VMWare guest GL driver在Fedora 23的64位(最新使用的內核生皮鞭),但我得到「make」中的錯誤:爲什麼我收到「錯誤:函數隱式聲明」上vmwgfx
$ cd $TOP/vmwgfx
$ make
make -C /lib/modules/4.4.0-0.rc2.git2.2.fc24.x86_64/source SUBDIRS=`/bin/pwd` DRMSRCDIR=`/bin/pwd` modules
make[1]: Entering directory '/usr/src/kernels/4.4.0-0.rc2.git2.2.fc24.x86_64'
CC [M] /home/IRUser/github/vmwgfx/drm_lock.o
/home/IRUser/github/vmwgfx/drm_lock.c: In function ‘drm_lock’:
/home/IRUser/github/vmwgfx/drm_lock.c:124:3: error: implicit declaration of function ‘block_all_signals’ [-Werror=implicit-function-declaration]
block_all_signals(drm_notifier, &dev->sigdata, &dev->sigmask);
^
/home/IRUser/github/vmwgfx/drm_lock.c: In function ‘drm_unlock’:
/home/IRUser/github/vmwgfx/drm_lock.c:183:2: error: implicit declaration of function ‘unblock_all_signals’ [-Werror=implicit-function-declaration]
unblock_all_signals();
^
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target '/home/IRUser/github/vmwgfx/drm_lock.o' failed
make[2]: *** [/home/IRUser/github/vmwgfx/drm_lock.o] Error 1
Makefile:1388: recipe for target '_module_/home/IRUser/github/vmwgfx' failed
make[1]: *** [_module_/home/IRUser/github/vmwgfx] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.4.0-0.rc2.git2.2.fc24.x86_64'
Makefile:139: recipe for target 'modules' failed
make: *** [modules] Error 2
我對Makefile及其語法不是很熟悉。這裏會發生什麼?
最有可能你的內核CFLAGS配置爲使用'-Wimplicit功能,declaration'和'-Werror',而這個驅動程序使用隱式聲明的,因此不能用這個標誌進行編譯。在內核源碼目錄中檢查你的'.config'。 – keltar
嗯,我不這麼認爲:'$貓/usr/src/kernels/4.4.0-0.rc2.git2.2.fc24.x86_64/.config | grep的CFLAGS'給我'CONFIG_ARCH_HWEIGHT_CFLAGS =「 - FCALL保存的-RDI -fcall保存的-RSI -fcall保存的-RDX -fcall保存的-RCX -fcall保存的-R8 -fcall保存的-R9 -fcall-saved- r10 -fcall-saved-r11「' – fredrik
是的,我可能錯了,它是內核目錄中的'Makefile'。我也有'-Werror-implicit-function-declaration',所以它可能在後來的內核版本中被添加爲默認值。但無論如何,我沒有得到一個錯誤,'block_all_signals'在'sched.h'中聲明沒有任何問題。沒有內核4.4(只有4.3)來測試它,試着在'include/linux/sched.h'中嘗試''block_all_signals',它可能被刪除了。 – keltar