gcc如何确定默认情况下是否生成32位或64位可执行文件?

时间:2014-08-29 01:46:42

标签: c linux gcc solaris

在我的64位Solaris中,默认情况下我的gcc会生成32位可执行文件(用于生成64位可执行文件,需要添加“-m64”编译选项)。在我的64位Linux中,我的gcc默认会生成64位可执行文件。我试图找到gcc website中的原因,但不幸的是,有很多相关的选项(--with-arch, - with-cpu, - with-abi等)。从文档中,我看不出哪个可以确定生成32位或64位可执行文件。

有人可以就这个问题提出一些建议吗?

3 个答案:

答案 0 :(得分:3)

这取决于编译器的安装方式,这实际上归结为分发和可能的安装选项。如果有任何疑问并需要确定性,只需包含-m选项;当32位是默认值时使用-m32并没有什么坏处,而当64位是默认值时同样适用于-m64。

答案 1 :(得分:1)

编译gcc时,使用--target选项指定要为其生成编译器的相应系统。要了解GCC支持的所有目标,您可以通过gcc / config /文件夹检查gcc / configure文件或oogle。生成编译器后,“compile”命令,即gcc source.c -o object.o将始终为已编译gcc的默认目标生成对象。

但是,您可以为指定目标周围的各种变化生成对象。例如。您可以为64位系统生成32位和64位二进制文​​件。

例如,configure --target = mips64-elf将为64位mips目标生成gcc编译器。生成编译器后,无论何时键入gcc -c source.c -o object.o,都将生成64位mips目标文件。

因此,如果您在所讨论的两个系统上输入gcc -v,您将看到gcc的配置如何开始,这应该可以回答您的问题。

答案 2 :(得分:0)

在您提到的document处,请注意“启用目标”选项。