【问题标题】:Port some code to GCC, have some problems with #pragma directives将一些代码移植到 GCC,#pragma 指令有一些问题
【发布时间】:2013-04-26 11:31:21
【问题描述】:

我正在尝试使用 GCC 编译此代码,并且我有这些 #pragma 指令,我正在尝试将其转换为 GCC 可理解的指令,但我不知道如何:

#pragma section(".CRT$XCA", read, write)
#pragma data_seg(".CRT$XCA")        // start of ctor section
_PVFV __xc_a[] = {0};

#pragma section(".CRT$XCZ", read, write)
#pragma data_seg(".CRT$XCZ")        // end of ctor section
_PVFV __xc_z[] = {0};

#pragma data_seg()
#pragma comment(linker, "/merge:.CRT=.rdata")

我知道要创建一个新部分,您可以使用__attribute__ ((section (".CRT$XCZ"))),但是data_seg 呢?

【问题讨论】:

    标签: c++ gcc c-preprocessor porting pragma


    【解决方案1】:

    GCC 使用不同且不兼容的方式注册全局构造函数。与其尝试移植它,不如根据 GCC 使用的 ABI 重写它。

    有关血腥细节,请参阅例如libgcc/crtstuff.clibgcc/gbl-ctors.h 在 GCC 源代码树中。

    【讨论】:

    • 我还发现了这个:avabodh.com/cxxin/nostdlib.html。现在,我不知道它是否适用于 Windows
    • @ali:如果你想要一些在 Windows 上的 GCC 下肯定可以工作的东西,请参阅 see MinGW-w64
    • 非常感谢您的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多