问题描述
它是一种在支持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”?格式化目标文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!