建立crti.o为i386

问题描述:

我想建立一个交叉编译器与x86_64是主机和i386是目标。我得到(所有常见的)crti.o:没有这样的文件错误。而不是从发行版中抓取已经构建的crti.o和crtn.o ...我怎么可以从glibc(或者可能是gcc)源代码中显式创建这些文件?建立crti.o为i386

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

感谢, Chenz

+0

可能重复[crti.o文件丢失(http://*.com/questions/91576/crti-o-file-missing) – user2284570 2014-07-08 13:55:55

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

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,但听起来好像你没有。

$ 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

这里有一个可能性(从here

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

+0

我想只有32位,而不是其他方式。我不想使用发行版本...我想从源代码构建。请阅读供参考。 – 2009-02-27 14:53:37