微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ld: 输入文件‘lib/kernel.o’的 i386 架构与 i386:x86-64 输出不兼容

如何解决ld: 输入文件‘lib/kernel.o’的 i386 架构与 i386:x86-64 输出不兼容

我正在尝试使用交叉编译器编译用 C++ 编写的内核,但是每当我尝试链接文件时,它都会引发上述错误。有这样的问题,但没有一个提供有效的解决方案。

ld file

make file(我依次调用 make kernel、make buildimg 和 make run)

ld 命令的完整输出

ld: i386 architecture of input file `lib/kernel.o' is incompatible with i386:x86-64 output
make: *** [Makefile:33: link] Error 1

gcc 版本:

i686-elf-gcc (GCC) 10.2.0
copyright (C) 2020 Free Software Foundation,Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or fitness FOR A PARTIculaR PURPOSE.

Code

经过进一步检查,它会抛出此错误,因为它将内核编译为 32 bit intel 80386,而将其他所有内容编译为 64 bit x86-64,这令人困惑,因为对两者都运行完全相同的命令,只是它正在编译的文件是不一样

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。