我刚刚使用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。