是什么告诉64位系统上的32位gcc,制作64位二进制文​​件

时间:2014-05-18 08:41:00

标签: gcc

我有一个64位系统,但gcc是3​​2位,当我这样做时

>./gcc -c foobar.c

它使foobar.o为64位。好的,但它怎么知道呢?基于它知道生成64位对象的环境设置,以及记录在哪里?

来想一想,这样做很奇怪,不是吗?但是file实用程序清楚地说,gcc是3​​2位而foobar.o是64位。 (我将所有内容都移到同一个目录中,这样就不会混淆了。)

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

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

1 个答案:

答案 0 :(得分:0)

配置GCC时,可以指定三个不同的系统:

  • build: - 将建立GCC的系统(可能不是 与您的问题相关)
  • 主持人: - GCC要去的系统 执行(在你的情况下是32位)
  • target:将执行GCC生成的二进制文件的系统(在您的情况下为64位)

您可以通过运行来查看GCC的配置方式:

gcc -v

命令(查找 - {build,host,target}选项。