0

我正在尝试构建一个交叉编译器,其中 x86_64 为主机,i386 为目标。我得到了(所有常见的)crti.o:没有这样的文件错误。而不是从发行版中获取已经构建的 crti.o 和 crtn.o ......我该如何从 glibc(或可能的 gcc)源中显式构建这些文件?

仅供参考,我很清楚 x86_64 编译器的 -m32 选项。我宁愿只有一个 32 位的编译器环境。另外,我不想使用任何已经构建的 i386 编译器的原因是因为我计划根据我的测试需要混合和匹配 glibc/binutils/gcc 版本。

谢谢,陈兹

4

2 回答 2

1

这是一种可能性(从这里

您需要安装发行版的 32 位 libc-dev 软件包,或者您需要 --disable-multilib 这将导致编译器不支持 32 位模式。

于 2009-02-27T14:51:34.007 回答
0

您确定您正在正确使用配置交叉编译吗?它应该是

CBUILD = CHOST = x86_64-pc-linux-gnu
CTARGET = i386-pc-linux-gnu

当您在 上运行构建时x86_64,编译器在 上运行x86_64,它为i386.

如果您使用CHOST = i386-pc-linux-gnu,您将尝试生成 32 位二进制文​​件,该二进制文件需要与 32 位libc. 这很好,如果你已经有 32-bit libc,但听起来你没有。

IE

$ tar xvjf gcc-*.tar.bz2
$ cd gcc-*/
$ mkdir 构建
$ cd 构建
$ ../configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=i386-pc-linux-gnu
于 2009-02-27T22:59:15.847 回答