crosstool-ng的LD在编译内核时给出“源对象a / b / built-in.o具有EABI版本5,但目标b / built-in.o具有EABI版本0”

我刚刚使用crosstool-ng为“ arm-unknown-eabi”创建了一个gcc11交叉编译器来编译内核(对于msm8974芯片组为android),但是在链接的某个时刻,LD给出了有关eabi版本的错误,目标文件甚至不存在。 这些是crosstool工具链的组成部分:

  • binutils-2.34.tar.xz
  • gcc-git-46a58c77.tar.bz2
  • gettext-0.20.1.tar.xz
  • gmp-6.2.0.tar.xz
  • isl-0.22.tar.xz
  • libiconv-1.16.tar.gz
  • mpc-1.1.0.tar.gz
  • mpfr-4.0.2.tar.xz
  • ncurses-6.2.tar.gz
  • newlib-3.3.0.tar.gz

给出错误的完整命令是这样的:

  • / root / x-tools / arm-unknown-eabi / bin / arm-unknown-eabi-ld -EL -r -o drivers / gpu / built-in.o drivers / gpu / drm / built-in。 o drivers / gpu / ion / built-in.o
  • / root / x-tools / arm-unknown-eabi / bin / arm-unknown-eabi-ld:错误:源对象驱动程序/gpu/ion/built-in.o具有eabi版本5,但目标驱动程序/ gpu / built-in.o具有eabi版本0
  • / root / x-tools / arm-unknown-eabi / bin / arm-unknown-eabi-ld:无法合并文件驱动程序/gpu/ion/built-in.o的目标特定数据

查看这些文件:

  • drivers / gpu / built-in.o:无法打开“ drivers / gpu / built-in.o”(没有此类文件或目录)
  • drivers / gpu / drm / built-in.o:可重定位的ELF 32位LSB,ARM,版本1(ARM),未剥离
  • drivers / gpu / ion / built-in.o:可重定位的ELF 32位LSB,ARM,eabi5版本1(SYSV),未剥离

真正的目标(drivers / gpu / built-in.o)甚至不存在。尽管很小(320字节,我认为它是由AR创建的),但那里有一个DRM(未显示为eabi5)。

使用另一个工具链,使用完全相同的内核代码,Makefile等,一切都可以很好地进行。我以前使用的是musl gcc 10。

iCMS 回答:crosstool-ng的LD在编译内核时给出“源对象a / b / built-in.o具有EABI版本5,但目标b / built-in.o具有EABI版本0”

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1621062.html

大家都在问