问题描述
最近我一直在玩弄一个 x86 操作系统,并决定将它从使用 GCC 交叉编译器转换为使用 clang
。具体来说,我让 Makefile 使用 clang -target i386-pc-none
和 -m32
。经过一番挣扎,我终于设法通过了编译阶段并进入了链接阶段,但是我收到了这个错误:
/usr/bin/ld: i386:x86-64 architecture of input file `arch/i386/crtbegin.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `arch/i386/crtend.o' is incompatible with i386 output
请注意,这两个文件在我的操作系统上实际上并不存在,只是在编译器构建过程中的某个时间点放在那里(我在 Makefile 中特别告诉它这样做)。但是,即使我有 -m32
和 -target
标志并且还安装了 32 位 libc(不过,我的操作系统是 64 位),它也不会尝试链接 32 位版本.我该如何解决这个问题?
系统 crtbegin 和 crtend 是否应该使用?太晚了,想不起来了。
感谢所有帮助,如果需要,我可以提供更多信息和来源,谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)