Firefly开源社区

标题: Linux kernel 編譯出錯在 dwc_otg_hcd [打印本页]

作者: lzy7478    时间: 2014-11-29 00:08
标题: Linux kernel 編譯出錯在 dwc_otg_hcd
我使用 wiki 上提供的內核源碼與方式來編譯 bitbucket.org/T-Firefly/firefly-rk3288-kernel.git
但一直遇到編譯到 dwc_otg_hcd 這部份就出錯了,錯誤訊息如下:
  1. drivers/usb/dwc_otg_310/dwc_otg_hcd.c: In function ‘dwc_otg_hcd_rem_wakeup_cb’:
  2. drivers/usb/dwc_otg_310/dwc_otg_hcd.c:447:31: error: inlining failed in call to always_inline ‘dwc_otg_hcd_to_hcd’: function body not available
  3. extern inline struct usb_hcd *dwc_otg_hcd_to_hcd(dwc_otg_hcd_t *dwc_otg_hcd);
  4.                                ^
  5. drivers/usb/dwc_otg_310/dwc_otg_hcd.c:451:18: error: called from here
  6.   struct usb_hcd *hcd = dwc_otg_hcd_to_hcd(dwc_otg_hcd);
  7.                   ^
  8. scripts/Makefile.build:308: recipe for target 'drivers/usb/dwc_otg_310/dwc_otg_hcd.o' failed
  9. make[3]: *** [drivers/usb/dwc_otg_310/dwc_otg_hcd.o] Error 1
  10. scripts/Makefile.build:455: recipe for target 'drivers/usb/dwc_otg_310' failed
  11. make[2]: *** [drivers/usb/dwc_otg_310] Error 2
  12. scripts/Makefile.build:455: recipe for target 'drivers/usb' failed
  13. make[1]: *** [drivers/usb] Error 2
  14. Makefile:812: recipe for target 'drivers' failed
  15. make: *** [drivers] Error 2
复制代码

我試過以下 linux 版本編譯,都會遇到這個問題 ...
Debian Sid i386/amd64, ubuntu 14.04 i386/amd64

請問這邊要如何才能順利讓 linux kernel 編譯成功呢?

作者: lionking5131    时间: 2014-11-29 00:39
源码有没有 更新到最新的?下载后还要更新才能使用
作者: lzy7478    时间: 2014-11-29 10:17
我是透過 git clone 下來的,也透過 git pull 過,肯定是源裡最新的碼。
google 了一下,貌似沒什麼人遇到過這個問題阿?

唯一的一篇文章,作者也已經把這部份的文字加上刪除號覆蓋了 ...
作者: 暴走的阿Sai    时间: 2014-11-29 11:08
lzy7478 发表于 2014-11-29 10:17
我是透過 git clone 下來的,也透過 git pull 過,肯定是源裡最新的碼。
google 了一下,貌似沒什麼人遇到 ...

这个报错比较少见,楼主可以先去掉OTG相关的内核配置试试。
另外,楼主编译之前是使用firefly-rk3288_defconfig的配置么?
作者: isle    时间: 2014-11-29 11:09
你的交叉编译工具用的是什么版本,试下删除掉里面的 inline 选项
作者: busybee    时间: 2014-11-29 11:21
本帖最后由 busybee 于 2014-11-29 11:42 编辑

请列一下 gcc -v 的执行结果。

将出错行的 inline 这个关键字拿掉,就可以编译通过了。
Update:
https://bugs.launchpad.net/linaro-android/+bug/972937
是 gcc 版本的问题,我们之后会打上类似的补丁。

作者: lzy7478    时间: 2014-11-29 17:57
gcc -v 的內容
  1. $ gcc -v
  2. Using built-in specs.
  3. COLLECT_GCC=gcc
  4. COLLECT_LTO_WRAPPER=/usr/lib/gcc/i586-linux-gnu/4.9/lto-wrapper
  5. Target: i586-linux-gnu
  6. Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-3' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-i386/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-i386 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-i386 --with-arch-directory=i386 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-targets=all --enable-multiarch --with-arch-32=i586 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=i586-linux-gnu --host=i586-linux-gnu --target=i586-linux-gnu
  7. Thread model: posix
  8. gcc version 4.9.2 (Debian 4.9.2-3)
复制代码


arm-linux-gnueabihf -v 的內容
  1. arm-linux-gnueabihf-gcc -v
  2. Using built-in specs.
  3. COLLECT_GCC=arm-linux-gnueabihf-gcc
  4. COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper
  5. Target: arm-linux-gnueabihf
  6. Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-3' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-armhf-cross --with-arch-directory=arm --with-ecj-jar= --disable-libgcj --enable-objc-gc --enable-multiarch --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-checking=release --build=i586-linux-gnu --host=i586-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf-
  7. Thread model: posix
  8. gcc version 4.9.2 (Debian 4.9.2-3)
复制代码

作者: lzy7478    时间: 2014-11-29 22:07
busybee 发表于 2014-11-29 11:21
请列一下 gcc -v 的执行结果。

将出错行的 inline 这个关键字拿掉,就可以编译通过了。

我把 gcc 降成 4.6 版本,果真過了,先用 4.6 頂著先 :P




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1