如何使用MinGW访问c代码中的链接器符号?

问题描述 投票:0回答:1

我正在使用Mingw gcc和ld生成Windows可执行文件。我想访问C代码中某个部分的起始地址,但是我尝试了很多方法,但是没有人可以使用。

我的链接脚本文件具有此:

  .data BLOCK(__section_alignment__) :
  {
    __data_start__ = . ;
    *(.data)
    *(.data2)
    *(SORT(.data$*))
    KEEP(*(.jcr))
    __data_end__ = . ;
    *(.data_cygwin_nocopy)
  }

在C代码中,我这样做:

extern char  __data_start__;
uint32_t  test = &__data_start__;

并得到此错误:对__data_start__的未定义引用

有人可以帮我吗?谢谢

我正在使用Mingw gcc和ld生成Windows可执行文件。我想访问C代码中某个部分的起始地址,但是我尝试了很多方法,但是没有人可以使用。我的链接器...

gcc linker mingw
1个回答
0
投票

mingw32使用前导下划线,即编译器将为每个符号添加_(下划线)。您显示的链接器描述文件的一部分是默认链接器脚本的一部分(至少在我的安装中),并且对于您的代码,我得到[]的错误提示

int main()
{
    extern char __data_start__;
    return (int) &__data_start__;
}
© www.soinside.com 2019 - 2024. All rights reserved.