本文介绍了如何使编译器生成“ elf32-x86-64”?格式化目标文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

它是一种在支持32位指针的同时利用64位硬件的格式。 和。

It is a format that leverages 64-bit hardware while enforcing 32-bit pointers. Ref1 and Ref2.

我正在尝试将Google Test框架二进制文件链接到我的项目。

I am trying to link the Google Test framework binaries to my project.

我使用。

So essentially, there are 2 -mx32 options in the ninja command definition contributed by the $FLAGS $LINK_FLAGS respectively.

所以为什么我需要指定 -mx32 两次?

So why do I need to specify the -mx32 for twice??

我不明白为什么我可以指定 -mx32 for CMAKE_EXE_LINKER_FLAGS 。

And I don't understand why I can specify -mx32 for CMAKE_EXE_LINKER_FLAGS.

首先, -mx32 只是一个编译选项(),不是链接器选项。

First, -mx32 is only a compile option (ref), not a linker option.

第二个,来自链接规则定义, $ LINK_FLAGS 传递给 usr / bin / c ++ 不带 -Wl 前缀,因此即使该选项也可以被链接器理解,但它赢得了

Second, from the link rule definition, the $LINK_FLAGS are passed to usr/bin/c++ without a -Wl, prefix, so even the option can be appreciated by the linker, it won't be passed to the linker.

推荐答案

如果您以<$ c $调用它,GCC会相应地调整链接器命令行。 c> gcc -mx32 。它不仅仅是一个编译器标志。

GCC will adjust the linker command line accordingly if you invoke it as gcc -mx32. It is more than just a compiler flag.

这篇关于如何使编译器生成“ elf32-x86-64”?格式化目标文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-11 09:26