关于在x86平台下交叉编译目标架构为loongarch64的驱动。工具是8.3版本loongarch64-linux-genu-gcc
#在执行一下命令后:
make -C /opt/build/deps/loongarch64/5.4/linux-headers-5.4.18-85-generic M=/opt/build/src/km/20230809/client/5.4/sigspy modules ARCH=loongarch64 CROSS_COMPILE=loongarch64-linux-gnu-
#出现报错:
unrecognized e_machine 258 /opt/build/src/km/20230809/client/5.4/sigspy/spy.o
/opt/build/src/km/20230809/client/5.4/sigspy/spy.o: failed
scripts/Makefile.build:273: recipe for target '/opt/build/src/km/20230809/client/5.4/sigspy/spy.o' failed
make[1]: *** [/opt/build/src/km/20230809/client/5.4/sigspy/spy.o] Error 1
make[1]: *** 正在删除文件“/opt/build/src/km/20230809/client/5.4/sigspy/spy.o”
Makefile:1698: recipe for target '/opt/build/src/km/20230809/client/5.4/sigspy' failed
make: *** [/opt/build/src/km/20230809/client/5.4/sigspy] Error 2
make: 离开目录“/opt/build/deps/loongarch64/5.4/linux-headers-5.4.18-85-generic”
#通过loongarch64-linux-genu-gcc --version确保编译器配置没问题,在此之前编译x86、arm64是没有问题的,到龙芯这里就报错了。请问这是为什么呢
【以下回答由 GPT 生成】
由于目标架构为loongarch64,并且报错信息提到了"unrecognized e_machine 258",可以初步判断是由于目标架构不被当前编译器所支持导致的。
为了解决这个问题,你可以尝试以下方法:
确保你当前使用的编译器版本支持loongarch64架构。可以通过运行loongarch64-linux-gnu-gcc --version
命令来检查编译器版本。如果版本过低或不支持loongarch64,你可以尝试升级编译器。
确保你已经正确安装了loongarch64架构的交叉编译工具链。可以通过运行which loongarch64-linux-gnu-gcc
命令来检查编译器路径是否正确。如果不存在或路径错误,你可以尝试重新安装交叉编译工具链。
检查你的驱动代码是否适配loongarch64架构。有时候驱动代码可能会依赖特定的架构接口或指令集,如果代码不兼容loongarch64架构,编译过程会出现错误。
检查你的驱动代码中是否存在与其他模块或库的依赖关系。有时候编译驱动时会依赖其他模块或库文件,确保这些依赖的模块或库文件正确安装并可找到。
如果以上方法都没有解决问题,可能需要进一步调查和排查其他可能的原因。请提供更多问题的上下文和相关信息,以便更好地帮助你解决这个问题。