2014-05-18 143 views
3

我有一个64位系统,但GCC是32位的,当我做什么告诉32位GCC在64位系统上,使64位二进制

>./gcc -c foobar.c 

它使foobar.o这是64位。好的,但它是如何知道这么做的?基于它知道什么样的环境设置来生成64位对象,以及在哪里记录?

想想看,它真的很奇怪,不是吗?但file实用程序明确指出,gcc是3​​2位,foobar.o是64位。 (我把所有的东西都移到了相同的目录下,所以不会混淆)。

我也检查了3个动态链接库,它读取的内容如下:libc,libm和libz,它们也都是32位。

澄清,我不想知道,如何使它做32位。我想知道,什么它看着现在,它使它做64.这是我的问题,而不是如何强制它反过来。

+0

你完全确定gcc二进制文件是32位可执行文件吗? – nos

+0

@nos是的,我检查了(用'file'工具),实际上,我从32位设置中移除了'gcc'二进制文件(不要问为什么)。 –

+1

你用-m64试过了吗? – perencia

回答

0

当GCC被配置三种不同的系统可以指定:

  • 编译: - 在GCC将会对系统进行构建(可能不是 有关你的问题)
  • 主持人: - 系统其中GCC将会 被执行(在你的情况下32位)
  • 目标:将被执行,其中二进制文件,通过GCC产生打算系统(在64位你的情况)

你可以看到你的GCC是如何通过运行配置:

gcc -v 

命令(寻找 - {构建,托管,目标}选项。

相关问题