是什么让64位系统上的32位gcc将64位二进制
我有一个64位的系统,但是gcc是32位的,当我这样做的时候是什么让64位系统上的32位gcc将64位二进制,gcc,Gcc,我有一个64位的系统,但是gcc是32位的,当我这样做的时候 >./gcc -c foobar.c 它生成64位的foobar.o。好的,但是它怎么知道要这么做呢?根据它知道的生成64位对象的环境设置,在哪里记录了该设置 想一想,奇怪的是它会这样做,不是吗??但是file实用程序清楚地表明,gcc是32位,foobar.o是64位。(我将所有内容移到了同一个目录中,以免混淆。) 我还检查了它读取的3个动态链接库:libc、libm和libz,它们也是32位的 为了澄清,我不想知道,如何让
>./gcc -c foobar.c
它生成64位的foobar.o
。好的,但是它怎么知道要这么做呢?根据它知道的生成64位对象的环境设置,在哪里记录了该设置
想一想,奇怪的是它会这样做,不是吗??但是file
实用程序清楚地表明,gcc是32位,foobar.o是64位。(我将所有内容移到了同一个目录中,以免混淆。)
我还检查了它读取的3个动态链接库:libc、libm和libz,它们也是32位的
为了澄清,我不想知道,如何让它做32位。我想知道,它现在在看什么,它让它做64。这是我的问题,而不是如何强制它反过来。配置GCC时,可以指定三种不同的系统:
- 构建:-将要构建GCC的系统(可能不是 (与您的问题相关)
- 主机:-GCC将要访问的系统 被执行(在您的情况下为32位)
- 目标:执行GCC生成的二进制文件的系统(本例中为64位)
gcc -v
命令(查找--{build,host,target}选项。你绝对确定gcc二进制文件是32位可执行文件吗?@no是的,我检查过(使用
文件实用程序),事实上,我自己从32位设置中移动了gcc
二进制文件(不要问为什么).你试过使用-m64吗?大概你没有移动binutils,所以尽管编译器生成32位代码,汇编程序还是会生成64位elf对象文件。我不希望将32位工具链移动到64位平台“正常工作”@nos编译命令只读取5个文件:gcc、libc libm libz和foobar.c。所有这些二进制文件都是32位的。我确信它不会读取任何其他文件。