为i386构建crti.o

时间:2009-02-27 14:45:01

标签: gcc x86-64 glibc 32-bit

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

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

谢谢, Chenz

2 个答案:

答案 0 :(得分:1)

这是一种可能性(来自here

  

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

答案 1 :(得分: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位libc,那就没问题,但听起来你没有。{/ p>

$ tar xvjf gcc-*.tar.bz2
$ cd gcc-*/
$ mkdir build
$ cd build
$ ../configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=i386-pc-linux-gnu